我有以下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标志会导致此错误?
答案 0 :(得分:7)
嗯,/u
标志是特定于PHP的,支持Unicode支持(无论如何你的正则表达式都没有使用,除非你计划将Unicode空格字符与\s
简写匹配)。为什么不把它删除?
供参考,JavaScript only supports /g
(全局匹配),/i
(不区分大小写的匹配)和/m
(多行,即允许^
和$
在每行的开头和结尾匹配)修饰符。
答案 1 :(得分:1)
这是一个高度隐秘消息,这意味着您传递给RegEx构造函数的u
标志无效。 JavaScript支持;
g
(全球比赛)m
(“将开头和结尾字符(^和$)视为多行处理”)i
(不区分大小写的匹配)答案 2 :(得分:1)
不确定是否属于您的情况,但我遇到类似Node.js的问题:
SyntaxError:提供给RegExp构造函数的无效标志' u'
我只是通过更新我的Ubuntu服务器中的Node.js来修复它。 以前的版本是:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<connectionStrings>
<add name="Databasename" connectionString="Data Source=mysource;Initial Catalog=Data;Persist Security Info=True;User ID=userid;Password=password" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<customErrors mode="Off" />
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
然后我做了:
$ node -v
v5.1.1
没有更多问题。
答案 3 :(得分:0)
因为它不是有效的JavaScript正则表达式标志;有效标志为g
(全局),i
(忽略大小写)和m
(多行)。