我想解析字符串
例如,STR = 'uu2uuuu4uuu';
虽然我使用
警报(?str.match(/(2个\ S + 4)+ / IG));
当我只想要'uuuu'的时候我和外面的'2uuuu4'
答案 0 :(得分:0)
如果使用标志'g',它将匹配所有字符串,而不管'()',因为它是分组。 你需要这样的东西
var str='uu2uuuu4uuu';
alert(str.match(/2([^24]+)+4/i));
或者消除区域内的任何数字
alert(str.match(/\d+([^\d]+)+\d+/i));
答案 1 :(得分:0)
你想要什么需要一个后视和前瞻。例如:
(?<=START)(.*?)(?=END)
或仅适用于非空白:
(?<=START)(\S*?)(?=END)
或者,如果您只想匹配至少一个字符:
(?<=START)(.+?)(?=END)
(?<=START)(\S+?)(?=END)
如果您急于添加代码,我很抱歉告诉您......
但是 Javascript不支持regex lookbehind (即,(?<=START)
在javascript中无效)。因此,您必须删除g
标志并使用正则表达式获取第二个结果(index = 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中的正则表达式。[/ p>