1. ホーム
  2. javascript

[解決済み] javascriptの正規表現で、最初と最後の文字が似ているかどうかをチェックするには?

2022-03-07 13:33:53

質問

文字列の最初と最後の文字が同じかどうかを、正規表現だけで簡単にチェックする方法はありますか?

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')
)

Regexの説明はこちら :

  1. ^ 文字列の先頭の位置を主張する
  2. 第1捕獲グループ (.)
  3. .* 任意の文字 (改行を除く) にマッチします - 0 回から無制限まで、可能な限り何度でも、必要に応じて還元します (貪欲)
  4. \1 は、1番目のキャプチャグループが最近マッチしたテキストと同じテキストにマッチします。
  5. $ 文字列の末尾に位置することを表明します。

. は改行文字を含まないので、改行文字を含むように正規表現が更新されます。

var regex = /^([\s\S])[\s\S]*\1$/;

console.log(
  regex.test(`abcd

sa`)
)
console.log(
  regex.test(`ab
c
dsaasaw`)
)

参照する。 JavaScriptの正規表現を複数行に渡って使用するには?

Regexの説明はこちら :

  1. [.....] - 存在する1文字にマッチする
  2. \s - は任意の空白文字にマッチします。 [\r\n\t\f\v ] )
  3. \S - は、空白文字以外の任意の文字にマッチします ( [^\r\n\t\f ] )

最後に [\s\S] は任意の文字にマッチします。