是否有任何简单的方法来检查字符串的第一个和最后一个字符是否相同,仅使用正则表达式?
我知道你可以用 charAt 查看
var firstChar = str.charAt(0);
var lastChar = str.charAt(length-1);
console.log(firstChar===lastChar):
最佳答案
您可以将正则表达式与 capturing group 结合使用及其 backreference通过捕获第一个字符来断言起始字符和结束字符相同。要测试正则表达式匹配,请使用 RegExp#test
方法。
var regex = /^(.).*\1$/;
console.log(
regex.test('abcdsa')
)
console.log(
regex.test('abcdsaasaw')
)
^
断言字符串开头的位置- 第一捕获组
(.)
.*
匹配任何字符(换行符除外)- 在零次和无限次之间,尽可能多次,根据需要回馈(贪婪)\1
匹配与第一个捕获组最近匹配的相同文本$
断言字符串末尾的位置
.
不包含换行符,为了包含换行符更新正则表达式。
var regex = /^([\s\S])[\s\S]*\1$/;
console.log(
regex.test(`abcd
sa`)
)
console.log(
regex.test(`ab
c
dsaasaw`)
)
引用:How to use JavaScript regex over multiple lines?
[.....]
- 匹配出现的单个字符\s
- 匹配任何空白字符(等于[\r\n\t\f\v ]
)\S
- 匹配任何非空白字符(等于[^\r\n\t\f ]
)
最后 [\s\S]
匹配任何字符。
关于javascript正则表达式检查第一个和最后一个字符是否相似?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41871841/