javascript正则表达式检查第一个和最后一个字符是否相似?

Mil*_*lad 5 javascript

有没有简单的方法来检查字符串的第一个和最后一个字符是否相同,只有正则表达式?

我知道你可以咨询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. ^ 断言字符串开头的位置
  2. 第一捕获小组 (.)
  3. .* 匹配任何字符(换行除外) - 在零和无限次之间,尽可能多次,根据需要返回(贪婪)
  4. \1 匹配最近与第一个捕获组匹配的相同文本
  5. $ 断言字符串末尾的位置

.不包括换行符,为了包括新行更新的正则表达式.

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)

请参阅:如何在多行上使用JavaScript正则表达式?

正则表达式的解释:

  1. [.....] - 匹配单个字符
  2. \s- 匹配任何空格字符(等于[\r\n\t\f\v ])
  3. \S- 匹配任何非空白字符(等于[^\r\n\t\f ])

最后[\s\S]是匹配任何角色.