我想在一个字符串之间解析
例如 str='uu2uuuu4uuu';
虽然当我使用
警报(str.match(/(2\S+?4)+/ig));
当我只想要'uuuu'时,我会在外面得到'2uuuu4'
我想在一个字符串之间解析
例如 str='uu2uuuu4uuu';
虽然当我使用
警报(str.match(/(2\S+?4)+/ig));
当我只想要'uuuu'时,我会在外面得到'2uuuu4'
如果您使用标志 'g' 它将匹配所有字符串,而不管 '()' 因为它是分组的。你需要这样的东西
var str='uu2uuuu4uuu';
alert(str.match(/2([^24]+)+4/i));
或消除该地区的任何数字
alert(str.match(/\d+([^\d]+)+\d+/i));
你想要的东西需要向后看和向前看。例如:
(?<=START)(.*?)(?=END)
或仅用于非空格:
(?<=START)(\S*?)(?=END)
或者,如果您只想匹配至少一个字符:
(?<=START)(.+?)(?=END)
(?<=START)(\S+?)(?=END)
如果你只是匆忙添加到你的代码,我很抱歉告诉你......
但是Javascript 不支持正则表达式lookbehind(即,(?<=START)
在javascript 中无效)。因此,您将不得不放弃g
标志并使用如下正则表达式获取第二个结果(索引 = 1):
START(.*?)(?=END)
它会是这样的:
var str = 'uu2uuuu4uuu';
var match = str.match(/2(.*?)(?=4)/i);
alert(match[1]);
或这个:
var str = 'uu2uuuu4uuu';
var match = str.match(/2(\S+?)(?=4)/i);
alert(match[1]);
你明白了。我还没有找到更好的方法来模拟 javascript 中的正则表达式。