Javascript正则表达式创建错误

时间:2011-11-11 14:52:10

标签: 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标志会导致此错误?

4 个答案:

答案 0 :(得分:7)

嗯,/u标志是特定于PHP的,支持Unicode支持(无论如何你的正则表达式都没有使用,除非你计划将Unicode空格字符与\s简写匹配)。为什么不把它删除?

供参考,JavaScript only supports /g(全局匹配),/i(不区分大小写的匹配)和/m(多行,即允许^$在每行的开头和结尾匹配)修饰符。

答案 1 :(得分:1)

这是一个高度隐秘消息,这意味着您传递给RegEx构造函数的u标志无效。 JavaScript支持;

  • g(全球比赛)
  • m(“将开头和结尾字符(^和$)视为多行处理”)
  • i(不区分大小写的匹配)

For further info, see the MDC documentation

答案 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(多行)。