开发者

Finding Plus Sign in Regular Expression

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

I found out last night that if you try and find a plus sign in a string of text with a Javascript regular expression, it fails. It will not find that pattern, even开发者_如何学Go though it exists in that string. This has to be because of a special character. What's the best way to find a plus sign in a piece of text? Also, what other characters will this fail on?


Plus is a special character in regular expressions, so to express the character as data you must escape it by prefixing it with \.

var reg = /d\+1/;


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

But if you are unsure, it does no harm to include the escape before a non-word character you are trying to match.

A digit or letter is a word character, escaping a digit refers to a previous match, escaping a letter can match an unprintable character, like a newline (\n), tab (\t) or word boundary (\b), or a a set of characters, like any word-character (\w), any non-word character (\W).

Don't escape a letter or digit unless you mean it.


Just a note,

\ should be \\ in RegExp pattern string, RegExp("d\+1") will not work and Regexp(/d\+1/) will get error.

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


You should use the escape character \ in front of the + in your pattern. eg. \+


You probably need to escape the plus sign:

var pattern = /d\+1/

The plus sign is used in regular expressions to indicate 1 or more characters in a row.


It should be var pattern = '/d\\+1/'.

The string will escape '\\' as '\' ('\\+' --> '\+') so the regex object init with /d\+1/


if you want to use + (plus sign) or $ (sigil /dollar sign), then use \ (backslash) as a prefix. Like that: \$ or \+

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜