exec 看了半天没看懂

var matches = /(hello S+)/.exec('This is a hello world!');
console.log(matches[0]);
为什么结果是 hello world ! 我的理解是出 hello 's'代表空格 ’+’代表一个或多个 不是吗

阅读 3.2k
5 个回答

空格是\s,小写,\S大写是非空格,匹配字符是带\的。
这个表达式,即在 hello 后面加了一个空格(表达式接受直接按 space 输入的空格),又用\S匹配了非空格,于是抛出了剩下的字符串。可以在http://regexr.com/调试,鼠标移到表达式上会有提示。

S不是非空白符吗,匹配多次

s匹配的是任何不可见字符
而大写的S匹配的是任何可见字符

正则表达式里大写的S表示非空白字符,小写的s才表示空白字符

怎么可能是“hello world”嘛。 \s 才是空格。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题