esq*_*qew 63 javascript regex match
我是Regex的新手,我正在尝试将其用于我的一个新项目,看看我是否可以学习它并将其添加到我的技能复制中.但是,我在这里遇到了障碍.
我正在尝试通过使用该.search函数来查看用户的输入是否包含非法字符:
if (name.search("[\[\]\?\*\+\|\{\}\\\(\)\@\.\n\r]") != -1) {
...
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试执行该行包含它时,它会为该特定行抛出以下错误:
Uncaught SyntaxError: Invalid regular expression: /[[]?*+|{}\()@.
]/: Nothing to repeat
Run Code Online (Sandbox Code Playgroud)
我不能为我的生活看到我的代码有什么问题.谁能指出我正确的方向?
and*_*ski 86
您需要加倍用于转义正则表达式特殊字符的反斜杠.然而,正如@Bohemian指出的那样,大多数反斜杠都不需要.不幸的是,他的答案与你的问题一样.你真正想要的是:
反斜杠由读取字符串的代码解释,而不是传递给正则表达式解析器.你要:
"[\\[\\]?*+|{}\\\\()@.\n\r]"
Run Code Online (Sandbox Code Playgroud)
注意四倍的反斜杠.这绝对需要.传递给正则表达式编译器的字符串与@ Bohemian的字符串相同,并且正常工作.
建立@Bohemian,我认为最简单的方法是使用正则表达式文字,例如:
if (name.search(/[\[\]?*+|{}\\()@.\n\r]/) != -1) {
// ... stuff ...
}
Run Code Online (Sandbox Code Playgroud)
正则表达式文字是很好的,因为你不必转义转义字符,并且一些IDE将突出显示无效的正则表达式(对我来说非常有用,因为我经常搞砸它们).
对于 Google 旅行者:当您输入错误并将正则表达式运算符加倍时,也会出现此愚蠢且无用的错误消息+:
好的:
\w+
Run Code Online (Sandbox Code Playgroud)
不行:
\w++
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83532 次 |
| 最近记录: |