类似html的javascript正则表达式匹配标记

类似html的javascript正则表达式匹配标记,javascript,regex,Javascript,Regex,因为,我对正则表达式没有太多经验。在我的例子中,我想在下面的字符串中获得tag和tagint中的内容。结果将是2个数组,如下所示: 要匹配的字符串: Chủ 新罕布什尔州ật、 1863年第24届全国人大五次会议,基奥·斯里登布罗肯布洛克五世ội vãtrở về 吴哥ủ阿昂ở số 19 đườn.G.科尼格斯塔斯ằm trong khu phố Cổ 基恩ấTở thánh phố Hambourg.abc.wav 结果: [Chủ 新罕布什尔州ật、 1863年第24届全国人大五次会议,基

因为,我对正则表达式没有太多经验。在我的例子中,我想在下面的字符串中获得tag和tagint中的内容。结果将是2个数组,如下所示:

要匹配的字符串:

Chủ 新罕布什尔州ật、 1863年第24届全国人大五次会议,基奥·斯里登布罗肯布洛克五世ội vãtrở về 吴哥ủ阿昂ở số 19 đườn.G.科尼格斯塔斯ằm trong khu phố Cổ 基恩ấTở thánh phố Hambourg.abc.wav

结果:

[Chủ 新罕布什尔州ật、 1863年第24届全国人大五次会议,基奥·斯里登布罗肯布洛克五世ội vãtrở về 吴哥ủ阿昂ở số 19 đườn.G.科尼格斯塔斯ằm trong khu phố Cổ 基恩ấTở thánh phố 汉堡。]


[abc.wav]

结果中是否需要数组?在下面的代码中,您可以获得除数组之外的所需内容。如果需要数组,只需包装内容即可

/**
 * If <music> always follows <text>
 */
var matches = /<text>([\s\S]+?)<\/text>\s*<music>([\s\S]+?)<\/music>/.exec(STRING_TO_MATCH);
var text, music;
if (matches) {
    text = matches[0]; // <text> content
    music = matches[1]; // <music> content
}

/**
 * Otherwise 
 */
var text = /<text>([\s\S]+?)<\/text>/.exec(STRING_TO_MATCH);
var music = /<music>([\s\S]+?)<\/music>/.exec(STRING_TO_MATCH);
if (text) text = text[0];
if (music) music = music[0];

因为,当字符串具有换行符时,@taggon中的代码无效。\r\n。所以我在它前面加了一行。好的:

STRING_TO_MATCH = STRING_TO_MATCH.replace(/(?:\r\n|\r|\n)/g, '<br/>');

/**
 * If <music> always follows <text>
 */
var matches = /<text>(.+?)<\/text>\s*<music>(.+?)</music>/.exec(STRING_TO_MATCH);
var text, music;
if (matches) {
    text = matches[0]; // <text> content
    music = matches[1]; // <music> content
}

/**
 * Otherwise 
 */
var text = /<text>(.+?)<\/text>/.exec(STRING_TO_MATCH);
var music = /<music>(.+?)<\/music>/.exec(STRING_TO_MATCH);
if (text) text = text[0];
if (music) music = music[0];

非常感谢您回答我的问题。但是当字符串有换行符时,它不起作用\r\n。