此正则表达式在
JavaScript中无效.它说有一个无效的组.有人可以帮助我使它工作吗?
(?i)^(?![\. -])(?!.*[\. -]$)[\w!$%'*+/=?^`{|\.}~ -]{1,64}$
解决方法
更新:根据评论中提供的建议进行更新.
请改用这三个表达式中的一个.它是相同的正则表达式,只是修复(?i)部分并添加所需的转义以匹配Javascript规范.
var regex = new RegExp("^(?![\\. -])(?!.*[\\. -]$)[\\w!$%'*+/=?^`{|\\.}~ -]{1,64}$","i"); var regex = new RegExp('^(?![\\. -])(?!.*[\\. -]$)[\\w!$%\'*+/=?^`{|\\.}~ -]{1,64}$',"i"); var regex = /^(?![\. -])(?!.*[\. -]$)[\w!$%'*+/=?^`{|\.}~ -]{1,64}$/i;
如果您使用新的RegExp构建正则表达式对象,则必须转义所有反斜杠.第一个和第二个表达式之间的区别在于第二个表达式使用单引号来构造正则表达式字符串,并且单引号作为正则表达式的一部分,因此您必须转义单引号以使其正常工作.第三个表达式使用/ pattern / flags语法构造正则表达式对象.正如Mike在评论中指出的那样,如果它不在字符集中,则必须转义/.你所有的都是字符集,所以不需要转义.
在这里查看更多有关javascript正则表达式语法的信息https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp