我的正则表达式没有'不起作用
My regex doesn't work
我看不出创建新的regexp对象和使用/.../
有什么区别因为如果我执行以下操作,我会得到:
真-假
alert(/^'d{4}$/.test(obj.value)+" "+(new RegExp("^'d{4}$")).test(obj.value));
提前感谢
从字符串创建RegExp对象时,必须考虑到字符串常量语法(如RegExp语法)将'
视为一个特殊字符:
alert(/^'d{4}$/.test(obj.value)+" "+(new RegExp("^''d{4}$")).test(obj.value));
应该工作得更好。请注意字符串版本中的''
,而不是单个'
。
当你有这样的东西时会发生什么
var myRegExp = new RegExp( "blah blah 'd blah blah" );
首先,解析器必须查看表达式的低级部分,如变量名、=
符号、new
等。字符串常量是表达式的低级基本元素之一。解析器必须将字符串的源代码转换为运行时字符串值,这涉及到读取引号之间的字符。其中的'd
将意味着;对于解析器的字符串部分,请记住—字符串应该包含一个"d"。("d"字符并不特别,所以'd
在字符串中确实没有做任何有趣的事情,但'
仍然会被"吃掉"。)
因此,现在我们已经获得了表达式的基本构建块,因此在运行时,可以使用解析器组装的字符串值来调用RegExp构造函数。现在,是时候进行RegExp语法分析了。RegExp解析器现在看不到'd
,因为'
在构造字符串常量的过程中消失了。
因此,通过将传递给RegExp构造函数的字符串中的'
加倍,可以确保单个'
存活到正则表达式实际被解释为这样的点。当您使用"本机"正则表达式语法(/.../
)时,您只需要一个'
,因为正则表达式只解析一次。
相关文章:
- Javascript变量到PHP变量-如果语句不起作用,则发布
- 如果用户登录不起作用,则运行脚本
- 什么是最不坏的正则表达式来拒绝绝对无效的电子邮件地址
- 如果条件不起作用,则有类
- 如何在不使用 JavaScript 正则表达式的情况下将大写转换为小写,反之亦然
- 角度 2 向绑定不起作用,但表达式起作用
- 不能使用正则表达式将空格替换为零宽度空间
- jQuery 数学运算在 $(window).height() 上:如果减法不起作用,则除法不起作用
- 如果条件不起作用,则使用Javascript longhand
- 不是以正则表达式结尾的特定单词
- 如果语句不起作用,则第二个JavaScript表单验证
- 找不到与正则表达式模式匹配的字符串
- Javascript中不能用正则表达式删除占位符
- 我不能使用正则表达式
- 由多个单词(任意顺序)组成的不重复的正则表达式
- 我不能用正则表达式和变量替换字符
- 如果javascript不起作用,则嵌套
- 不能构造正则表达式
- 如果函数不起作用,则很可能
- 对于匹配/不匹配的正则表达式,返回true/false