正则表达式字符类简写

时间:2013-12-30 17:55:04

标签: javascript regex

如果\ s ==空白字符和\ d == [0-9]字符类,那么为什么:

var regex = /\s\d/;// same as writing [ 0-9]

var str = '1 + 2 = 3';

var match = str.match( regex );

document.write(match);

返回:“2”和:

var regex = /[\s\d]/;

var str = '1 + 2 = 3';

var match = str.match( regex );

document.write(match);

返回:1?

这是因为字符类括号([])内的短手强制[\ s \ d]选择空白字符或数字,上面的例子中指定“空格字符后跟数字”吗? / p>

根据:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

3 个答案:

答案 0 :(得分:2)

不,这不正确:

/[\s\d]/

与以下内容不同:

/\s\d/

第一个意味着match either a digit or a whitespace

尽管

稍后意味着match a whitespace followed by a digit

第一个名为character class,其中包含符号列表,任何人都可以匹配。

答案 1 :(得分:0)

您的第一个正则表达式/\s\d/ 与编写/[ 0-9]/相同,没有方括号,您没有使用字符类,因此正则表达式{{1} }表示“空格后跟数字”。这与/\s\d/不匹配,因为之前没有空格,但如果您使用全局标记,它将匹配1(和2。)

在第二个正则表达式3中,您将匹配字符串中的第一个字符,该字符是空格或数字,当然是/[\s\d]/,因为它是字符串中的第一个字符。

答案 2 :(得分:0)

/\s\d/:表示匹配完整的一个空格,然后精确匹配[0-9]

在'1 + 2 = 3'中,'2'和'3'都匹配正则表达式,但是,您的正则表达式只匹配第一个正则表达式。 如果您想同时匹配“2”和“3”,请使用 /\s\d/g 添加“g”(全局)后,它将匹配字符串中的所有匹配项。

/[\s\d]/:表示匹配一个空格或一个[0-9] 如果没有“g”修饰符,它会匹配第一个匹配项,即“1”

尝试在正则表达式中添加“g”,看看会发生什么。