正则表达式 \s* 为什么没有匹配到空格?

代码如下:

var name = 1;
var reg = new RegExp('(\\s*' + name + '|' + name + '\\s*)', 'g');
var reg2 = new RegExp('(\\s+' + name + '|' + name + '\\s+)', 'g');
var str = '1 2 3';

console.log(reg.exec(str)); //1. 结果如下图片

clipboard.png



console.log(reg2.exec(str)); //2. 结果如下图片

clipboard.png

阅读 4k
2 个回答

竖线表示分歧,而且会短路,第一个里面是因为竖线(分歧)之前的表达式已经可以满足,第二个是因为竖线之前的不能满足,再去用竖线后面的去匹配

直接匹配了前者了啊,后者才有空格

var name = 1;
var reg = new RegExp(name + '\\s*', 'g');
var reg2 = new RegExp('(\\s+' + name + '|' + name + '\\s+)', 'g');
var str = '1 2 3';

console.log(reg.exec(str)); //1. 结果如下图片
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题