我正在使用正则表达式匹配术语两侧的两个字符之一,但我想确保它们都是相同的字符。我该怎么做呢?

时间:2014-12-15 04:05:07

标签: regex

我尝试使用正则表达式匹配术语两侧的两个字符中的一个,但我想确保我匹配的第一个字符也是最后一个字符,换句话说,它们可以& #39; t不匹配。

这些应该有效:*word*_word_

这不应该:*word_

我如何确保这一点?

2 个答案:

答案 0 :(得分:3)

使用反向引用:

([^a-zA-Z ])[a-zA-Z]+(\1)

第一组在单词之前捕获非字母/非空格字符 \1表示“组1中捕获的任何内容”。

请参阅live demo

答案 1 :(得分:0)

var string = '*word*';
/* try these as well:
var string = '_word_';
var string = '*word_';
*/

if (/(.)\w+(.)/.exec(string)[1] === /(.)\w+(.)/.exec(string)[2]) {

  alert('The characters at the beginning and end match.');

} else {

  alert('The characters at the beginning and end DO NOT match.');

}

通过使用exec()函数上的索引,我们可以找到捕获的组。如果第一个捕获的组与第二个相同,则我们匹配。