在正则表达式中查找加号

问题描述 投票:0回答:7
var string = 'abcd+1';
var pattern = 'd+1'
var reg = new RegExp(pattern,'');
alert(string.search(reg));

我昨晚发现,如果您尝试使用 Javascript 正则表达式在文本字符串中查找加号,则会失败。 即使该模式存在于该字符串中,它也不会找到该模式。 这一定是因为一个特殊的角色。 在一段文本中查找加号的最佳方法是什么? 另外,还有哪些角色会失败?

javascript regex
7个回答
85
投票

Plus 是正则表达式中的 特殊字符,因此要将字符表示为数据,您必须通过在其前面加上

\
前缀来转义它。

var reg = /d\+1/;

28
投票
\-\.\/\[\]\\ **always** need escaping
\*\+\?\)\{\}\| need escaping when **not** in a character class- [a-z*+{}()?]

但是如果您不确定,在您尝试匹配的非单词字符之前添加转义符也没有什么坏处。

数字或字母是单词字符,转义数字指的是前一个匹配,转义字母可以匹配不可打印的字符,例如换行符( )、制表符 ( ) 或单词边界 ( ),或一组字符,例如任何单词字符 (\w)、任何非单词字符 (\W)。

除非您是认真的,否则不要转义字母或数字。


20
投票

只是一个注释,

\
在 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
投票

您可能需要转义加号:

var pattern = /d\+1/

正则表达式中使用加号来表示一行中的 1 个或多个字符。


1
投票

应该是

var pattern = '/d\\+1/'

字符串会将

'\\'
转义为
'\'
(
'\\+'
-->
'\+'
),因此正则表达式对象用
/d\+1/

初始化

0
投票

如果您想使用

+ (plus sign)
$ (sigil /dollar sign)
,请使用
\ (backslash)
作为前缀。像那样:
\$
\+

© www.soinside.com 2019 - 2024. All rights reserved.