Javascript regexp创建错误
我有以下JavaScript代码:Javascript regexp创建错误,javascript,regex,Javascript,Regex,我有以下JavaScript代码: aw_check_custom_validation['my-phone'] = /^\+[0-9]{1,3}(\s[0-9]{1,6}\s|\([0-9]{1,6}\)|[0-9]{1,6})[0-9\s]{5,8}$/u; 我收到以下错误: Uncaught SyntaxError: Invalid flags supplied to RegExp constructor 'u' 为什么/u标志会导致此错误?嗯,/u标志是特定于PHP的,支持Unico
aw_check_custom_validation['my-phone'] = /^\+[0-9]{1,3}(\s[0-9]{1,6}\s|\([0-9]{1,6}\)|[0-9]{1,6})[0-9\s]{5,8}$/u;
我收到以下错误:
Uncaught SyntaxError: Invalid flags supplied to RegExp constructor 'u'
为什么/u标志会导致此错误?嗯,
/u
标志是特定于PHP的,支持Unicode(您的正则表达式无论如何都不会使用Unicode,除非您计划将Unicode空白字符与\s
速记匹配)。为什么不干脆把它拿走呢
作为参考,
/g
(全局匹配)、/i
(不区分大小写的匹配)和/m
(多行,即允许^
和$
在每行的开始和结束处匹配)修饰符。这是一条非常隐晦的消息,表示传递给正则表达式构造函数的u
标志无效。JavaScript支持
(全局匹配)g
(“将开头和结尾字符(^和$)视为在多行上工作”)m
(不区分大小写匹配)i
因为它不是一个有效的JavaScript正则表达式标志;有效的标志是
g
(全局)、i
(忽略大小写)和m
(多行)。不确定是否是您的大小写,但我在Node.js中遇到了类似的问题:
SyntaxError:提供给RegExp构造函数“u”的标志无效
我只是通过更新Ubuntu服务器中的Node.js来修复它。
以前的版本是:
$ node -v
v5.1.1
然后我做了:
$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
... long output
$ sudo apt-get install -y nodejs
... shorter output
$ node -v
v6.7.0
没有其他问题。您希望/u做什么?因为唯一有效的标志是
i
、m
和g
:谢谢解释!我理解我误解了regexp的标志:)目前(经过几年的等待之后,u
标志可用于regexp构造函数(并在文档中描述):在支持ECMAScript 2015(Chrome v.50、Firefox/Gecko v.46)的浏览器中。@32bitkid:可能,但JavaScript正则表达式严重缺乏Unicode支持。除了单个代码点(\u1234
)之外,没有多少<例如,代码>\w仅匹配ASCII字符;目前不支持Unicode脚本/块/属性(\p{L}
等)…@TimPietzcker如果我在预览中使用/
,该怎么办代码>而不是^
和$
/m
对它不起作用。你能帮我吗?@TimPietzcker对不起,你能回答我吗?@Flith:对不起,我看不出这个问题有什么联系。如果您想问一个新问题,请使用“提问”按钮并包含更多信息。注释不适用于此。ECMAScript 2015中添加了对u
标志的JavaScript支持,因此RegExp构造函数可以使用u
标志:。支持u
的最早浏览器版本:Chrome v.50、Firefox/Gecko v.46。