var string = 'abcd+1';
var pattern = 'd+1'
var reg = new RegExp(pattern,'');
alert(string.search(reg));
我昨晚发现,如果你尝试在带有Javascript正则表达式的文本字符串中找到一个加号,它就会失败。它不会找到该模式,即使它存在于该字符串中。这必须是因为一个特殊的角色。在一段文字中找到加号的最佳方法是什么?此外,这会失败的其他角色是什么?
答案 0 :(得分:55)
在正则表达式中加上a special character,因此要将字符表示为数据,您必须在前缀\
之前将其转义。
var reg = /d\+1/;
答案 1 :(得分:21)
\-\.\/\[\]\\ **always** need escaping
\*\+\?\)\{\}\| need escaping when **not** in a character class- [a-z*+{}()?]
但如果您不确定,在您尝试匹配的非单词字符之前包含转义包没有任何害处。
数字或字母是单词字符,转义数字指的是前一个匹配,转义字母可以匹配不可打印的字符,如换行符(\ n),制表符(\ t)或单词边界(\ b) ,或一组字符,如任何单词字符(\ w),任何非单词字符(\ W)。
除非你的意思,否则不要逃避字母或数字。
答案 2 :(得分:14)
只是一个注释,
在RegExp模式字符串中 \
应为\\
,RegExp("d\+1")
将无效,Regexp(/d\+1/)
将出错。
var string = 'abcd+1';
var pattern = 'd\\+1'
var reg = new RegExp(pattern,'');
alert(string.search(reg));
//3
答案 3 :(得分:2)
您应该在模式中的+前面使用转义字符\。例如。 \ +
答案 4 :(得分:2)
你可能需要逃避加号:
var pattern = /d\+1/
正则表达式中使用加号表示一行中有一个或多个字符。
答案 5 :(得分:1)
应为var pattern = '/d\\+1/'
。
该字符串将以'\\'
('\'
- > '\\+'
)转义'\+'
,因此正则表达式对象init为/d\+1/
答案 6 :(得分:-1)
简便的方法:
字母是:“ [\+]
”
我们要查找的所有加号:“ [\+]*
”