var string = 'abcd+1';
var pattern = 'd+1'
var reg = new RegExp(pattern,'');
alert(string.search(reg));
我昨晚发现,如果您尝试使用 Javascript 正则表达式在文本字符串中查找加号,则会失败。 即使该模式存在于该字符串中,它也不会找到该模式。 这一定是因为一个特殊的角色。 在一段文本中查找加号的最佳方法是什么? 另外,还有哪些角色会失败?
\-\.\/\[\]\\ **always** need escaping
\*\+\?\)\{\}\| need escaping when **not** in a character class- [a-z*+{}()?]
但是如果您不确定,在您尝试匹配的非单词字符之前添加转义符也没有什么坏处。
数字或字母是单词字符,转义数字指的是前一个匹配,转义字母可以匹配不可打印的字符,例如换行符( )、制表符 ( ) 或单词边界 ( ),或一组字符,例如任何单词字符 (\w)、任何非单词字符 (\W)。
除非您是认真的,否则不要转义字母或数字。
只是一个注释,
\
在 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
您应该在模式中的
\
前面使用转义字符 +
。 例如。 \\+
。
您可能需要转义加号:
var pattern = /d\+1/
正则表达式中使用加号来表示一行中的 1 个或多个字符。
应该是
var pattern = '/d\\+1/'
。
字符串会将
'\\'
转义为 '\'
('\\+'
--> '\+'
),因此正则表达式对象用 /d\+1/
初始化
如果您想使用
+ (plus sign)
或 $ (sigil /dollar sign)
,请使用 \ (backslash)
作为前缀。像那样:
\$
或 \+