寻找加号登录正则表达式

时间:2010-01-07 14:48:32

标签: javascript regex

var string = 'abcd+1';
var pattern = 'd+1'
var reg = new RegExp(pattern,'');
alert(string.search(reg));

我昨晚发现,如果你尝试在带有Javascript正则表达式的文本字符串中找到一个加号,它就会失败。它不会找到该模式,即使它存在于该字符串中。这必须是因为一个特殊的角色。在一段文字中找到加号的最佳方法是什么?此外,这会失败的其他角色是什么?

7 个答案:

答案 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)

简便的方法:

字母是:“ [\+]

我们要查找的所有加号:“ [\+]*