js 正则有效数字匹配 /^[+-]?(\d|([1-9]\d+))(\.\d+)?$/

js正则/^[+-]?(\d|([1-9]\d+))(\.\d+)?$/,匹配"3\.30"为什等于true... js 正则 /^[+-]?(\d|([1-9]\d+))(\.\d+)?$/,匹配 "3\.30" 为什等于true 展开
 我来答
梦忠魂
2020-07-23 · TA获得超过299个赞
知道小有建树答主
回答量:392
采纳率:93%
帮助的人:172万
展开全部

3\.30 中,\ 转义符惹的祸

这个字符串里,\ 依旧是起到转义符的作用

直接输出文字,可以得到这样的结果

所以正则表达式匹配的结果为 true


这个问题唯一的规避方法就是对 \ 进行转义,即书写成 \\. ,除此之外,没有别的办法。

浏览器执行 JavaScript 不同于文本工具,没有转义符的开关。

更多追问追答
追问
谢谢,也就是说我在进行正则匹配时,需要先将 "\" 替换成“\\”,然后再进行正常的匹配。
var str = "33\.33";
var reg = /^[+-]?(\d|([1-9]\d+))(\.\d+)?$/;
str = str.replace("\","\\") 或者 str = str.replace("\","");

reg.test(str);
追答

如果你是要这样进行使用的话,这是不可行的。

var  str = "33\.33"

被运行的时候,已经被转义成 33.33 了

如果你希望 str 的结果就是 33\.33,而你只能通过 replace 方法把它变成 33\.33

那你只能把 . 改成 \\. 才能得到 33\.33 的结果

var str = "33\.33".replace(/\./g,'\\.')

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式