![](/img/trans.png)
[英]JavaScript RegEx - replace first and last occurrence of a character
[英]javascript regex to check if first and last character are similar?
是否有任何简单的方法来检查字符串的第一个和最后一个字符是否相同,仅使用正则表达式?
我知道你可以用 charAt 检查
var firstChar = str.charAt(0);
var lastChar = str.charAt(length-1);
console.log(firstChar===lastChar):
我不是要这个: 匹配第一个和最后一个字符的正则表达式
您可以将正则表达式与捕获组及其反向引用一起使用,以通过捕获第一个字符来断言起始字符和结束字符相同。 要测试正则表达式匹配,请使用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`) )
参考: 如何在多行上使用 JavaScript 正则表达式?
[.....]
- 匹配存在的单个字符\\s
- 匹配任何空白字符(等于[\\r\\n\\t\\f\\v ]
)\\S
- 匹配任何非空白字符(等于[^\\r\\n\\t\\f ]
) 最后[\\s\\S]
匹配任何字符。
你可以试试看
const rg = /^([\w\W]+)[\w\W]*\1$/; console.log( rg.test(`abcda`) ) console.log( rg.test(`aebcdae`) ) console.log( rg.test(`aebcdac`) )
var rg = /^([a|b])([a|b]+)\1$|^[a|b]$/;
console.log(rg.test('aabbaa'))
console.log(rg.test('a'))
console.log(rg.test('b'))
console.log(rg.test('bab'))
console.log(rg.test('baba'))
这将确保字符不是别人,而是具有相同开始和结束的 a 和 b。
它还将匹配单个字符,因为它们也以相同的字符开始和结束。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.