var string = 'abcd+1';
var pattern = 'd+1'
var reg = new RegExp(pattern,'');
alert(string.search(reg));
我昨晚发现,如果您尝试在带有 Javascript 正则表达式的文本字符串中查找加号,它会失败。它不会找到那个模式,即使它存在于那个字符串中。这一定是因为一个特殊的字符。在一段文本中找到加号的最佳方法是什么?此外,还有哪些其他角色会失败?
var string = 'abcd+1';
var pattern = 'd+1'
var reg = new RegExp(pattern,'');
alert(string.search(reg));
我昨晚发现,如果您尝试在带有 Javascript 正则表达式的文本字符串中查找加号,它会失败。它不会找到那个模式,即使它存在于那个字符串中。这一定是因为一个特殊的字符。在一段文本中找到加号的最佳方法是什么?此外,还有哪些其他角色会失败?
Plus 是正则表达式中的特殊字符,因此要将字符表示为数据,您必须通过在它前面加上\
.
var reg = /d\+1/;
\-\.\/\[\]\\ **always** need escaping
\*\+\?\)\{\}\| need escaping when **not** in a character class- [a-z*+{}()?]
但是,如果您不确定,在您尝试匹配的非单词字符之前包含转义符也无妨。
数字或字母是单词字符,转义数字是指之前的匹配,转义字母可以匹配不可打印的字符,例如换行符 (\n)、制表符 (\t) 或单词边界 (\b) 或 aa字符集,如任何单词字符 (\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 个或多个字符。