簡體   English   中英

javascript 正則表達式檢查第一個和最后一個字符是否相似?

[英]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. ^斷言字符串開頭的位置
  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`) )

參考: 如何在多行上使用 JavaScript 正則表達式?

正則表達式解釋在這里:

  1. [.....] - 匹配存在的單個字符
  2. \\s - 匹配任何空白字符(等於[\\r\\n\\t\\f\\v ]
  3. \\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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM