需要匹配的字符串为' hello world '
①假设正则表达式为/^s+|s+$/,为什么能够匹配首尾的空白字符,|不是用于选择么,h前面的空白字符符合^\s+,所以\s+$应该是被忽略掉了,为什么不是匹配到h前面的空白就结束了
②假设正则表达式为/^s+$/,为什么却不能匹配h前面的空白
请问我的理解错在哪
需要匹配的字符串为' hello world '
①假设正则表达式为/^s+|s+$/,为什么能够匹配首尾的空白字符,|不是用于选择么,h前面的空白字符符合^\s+,所以\s+$应该是被忽略掉了,为什么不是匹配到h前面的空白就结束了
②假设正则表达式为/^s+$/,为什么却不能匹配h前面的空白
请问我的理解错在哪
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
^\s+|\s+$
这个正则中包含了^
,$
,'|'前面两个匹配的是位置,也就是一个是匹配的是开始位置,另外一个匹配的是结束位置,他们两个仅仅匹配的是一个位置,然后中间的|
,代表的是正则表达式中的分支条件,就指的是有几种匹配规则,从正则表达式上上分析第一种规则是匹配开始位置后面是空格的内容,另一种匹配规则是匹配空格到结束位置,解释你的第一点疑问,当正则表达式在匹配文本时,他首先匹配的是开始位置0,然后发现开始位置后面跟随空格,然后匹配第一种规则,此时匹配到了位置1,但是他发现匹配内容并没有结束,它会从匹配第一次的位置处继续往后匹配,发现有满足第二个规则的内容,从位置12的地方又开始进行匹配,结束为止是位置13,所以匹配了两条。至于第二点疑问是因为你写的正则表达式是匹配开始位置的空格以及匹配结束为止,也即是匹配字符串的开始与结束