javascript – 使用Regex匹配字符串的相同开始和结束字符

前端之家收集整理的这篇文章主要介绍了javascript – 使用Regex匹配字符串的相同开始和结束字符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将字符串的开头和结尾字符匹配为相同的元音.我的正则表达式在大多数场景中都有效,但在其他场景中失败了:
var re = /([aeIoU]).*\1/;
re.test(str);

样本输入:

> abcde,输出 – false(有效)
> abcda,输出 – true(有效)
> aabcdaa,输出 – 真(有效)
> aeqwae,输出 – true(无效)
> ouqweru,输出 – true(无效)

解决方法

您需要为字符串添加锚点.

当你有,例如:

aeqwae

你说输出是真的,但它无效,因为a与e不同.好吧,正则表达式只是匹配前一个字符(在e之前),这是一个.因此,匹配有效.所以,你得到这个:

[aeqwa]e

括号中的字符串是实际匹配以及返回true的原因.

如果您将正则表达式更改为:

/^([aeIoU]).*\1$/

通过添加^,您可以告诉它匹配的开始必须是字符串的开头,并通过添加$,告诉它匹配的结尾必须是字符串的结尾.这样,如果匹配,则必须匹配整个字符串,这意味着aeqwae将不再匹配.

测试正则表达式的一个很好的工具是Regex101.试一试!

注意:根据您的输入,您可能需要设置全局(g)或多行(m)标志.全局标志阻止正则表达式在第一次匹配后返回.多行标志使^和$匹配行的开头和结尾(不是字符串).在使用您的输入进行测试时,我使用了它们.

猜你在找的JavaScript相关文章