有没有简单的方法来检查字符串的第一个和最后一个字符是否相同,只有正则表达式?
我知道你可以咨询charAt
var firstChar = str.charAt(0);
var lastChar = str.charAt(length-1);
console.log(firstChar===lastChar):
Run Code Online (Sandbox Code Playgroud)
我不是要求这个:正则表达式匹配第一个和最后一个字符
Pra*_*lan 14
您可以将正则表达式与捕获组一起使用,并通过捕获第一个字符来使其后向引用断言起始字符和结束字符相同.测试正则表达式匹配使用RegExp#test方法.
var regex = /^(.).*\1$/;
console.log(
regex.test('abcdsa')
)
console.log(
regex.test('abcdsaasaw')
)Run Code Online (Sandbox Code Playgroud)
^ 断言字符串开头的位置(.).* 匹配任何字符(换行除外) - 在零和无限次之间,尽可能多次,根据需要返回(贪婪)\1 匹配最近与第一个捕获组匹配的相同文本$ 断言字符串末尾的位置在.不包括换行符,为了包括新行更新的正则表达式.
var regex = /^([\s\S])[\s\S]*\1$/;
console.log(
regex.test(`abcd
sa`)
)
console.log(
regex.test(`ab
c
dsaasaw`)
)Run Code Online (Sandbox Code Playgroud)
[.....] - 匹配单个字符\s- 匹配任何空格字符(等于[\r\n\t\f\v ])\S- 匹配任何非空白字符(等于[^\r\n\t\f ])最后[\s\S]是匹配任何角色.