如果\ 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
答案 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
”,看看会发生什么。