Javascript 字符范围内的正则表达式字符类失败intellij';s jsLint检验

Javascript 字符范围内的正则表达式字符类失败intellij';s jsLint检验,javascript,regex,intellij-idea,jslint,Javascript,Regex,Intellij Idea,Jslint,纠正我检查不合格的最简单方法是什么?intellij(我可以找到)中没有允许字符范围内的字符类的选项。如果您想在字符类中允许文字连字符-,则需要将其立即放在打开[(请参阅中的“字符类”部分)之后或关闭](我至少在一些语言中找到了作品),否则它被认为意味着一个范围 还请注意@IanMackinnon在上的评论(尽管我在非常简短的搜索后找不到权威的来源):“显式转义字符类中的连字符是另一个JSLint建议。”-这是在文字连字符的上下文中编写的。无论jsLint是否需要这样做才能通过检查,这样做可能是


纠正我检查不合格的最简单方法是什么?intellij(我可以找到)中没有允许字符范围内的字符类的选项。

如果您想在字符类中允许文字连字符
-
,则需要将其立即放在打开
[
(请参阅中的“字符类”部分)之后或关闭
]
(我至少在一些语言中找到了作品),否则它被认为意味着一个范围

还请注意@IanMackinnon在上的评论(尽管我在非常简短的搜索后找不到权威的来源):“显式转义字符类中的连字符是另一个JSLint建议。”-这是在文字连字符的上下文中编写的。无论jsLint是否需要这样做才能通过检查,这样做可能是一种好的做法,以便将来的开发人员在(未转义的)连字符和开头之间放置一些东西,从而意外地将类转换为一个范围,从而对文字连字符进行进一步验证(或关闭)括号

因此,我认为正则表达式中当前读作
[\w-+\s]
的部分应该重写为
[\-\w+\s]


以及后续的
[\w-+]
作为
[\-\w+]
,等等。

第一位是错误的-他正在将regex文本传递给RegExp构造函数(不必要),和
\w
如果是字符串,则只需要
\\w
即可。他需要转义连字符
\-
,或者按照您的建议将其放在类的开头或结尾处。@MikeM确实-感谢您突出显示我的错误,已经更新了我的答案以反映问题。为什么
\w
中有
[]
?@Mathletics因为我对正则表达式一无所知,只是从另一个SO答案中复制过来。按照我下面的答案,在
[]
@nimchinpsky中使用
\w
没有什么错,因为未转义的连字符在字符类中有特殊意义(它创建了一个“范围”)包含的字符,例如
a-z
0-9
)我认为这个正则表达式是不正确的(我假设字符类中的连字符的目的是允许在电子邮件地址的目标字符串中的该点使用文字连字符?).因此,您是否介意提供具体SO答案的参考资料,以便在适当情况下予以更正?