解析2个文本之间的字符串

时间:2013-03-20 00:08:33

标签: javascript

我想解析字符串

例如,

STR = 'uu2uuuu4uuu';

虽然我使用

警报(?str.match(/(2个\ S + 4)+ / IG));

当我只想要'uuuu'的时候我和外面的'2uuuu4'

2 个答案:

答案 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>