これらのテキスト文字列に「GARNSEY」という単語が2回宣言されていることに注目してください。
"GARNSEY B R & D B GARNSEY"
"GARNSEY B R & D GARNSEY"
これで、D GARNSEY(ミドルネームのイニシャルなし)またはDB GARNSEY(ミドルネームのイニシャルを含む)になりますが、GARNEYが言及されているかどうかを知る必要があります。これは、姓が最初と最後の2回言及されていることを意味します。
本JavaScriptプログラマーズリファレンスによると:
「パターン全体でその正確な記号の検索を繰り返すことができます...これは\1を使用して実行できます。\1を使用すると、最初のグループ化された式の結果が参照されます。」
では、最初のグループ\ w {1、})\ 1の結果を「保存」してから、最後にそれを再利用して、ミドルネームがあるかどうかも確認します。
/^(\w{1,})\1\s\w{1,}((?:\s\w{1,})?)+\s+&\s+\w{1,}\s(((?:\s\w{1,})?)+)\1$/;
それでも、JavaScriptインタープリターは、以下の簡単なテストで「失敗」を警告します。
(function(){
var checkChar = function(txt){
var regex = /^(\w{1,})\1\s\w{1,}((?:\s\w{1,})?)+\s+&\s+\w{1,}\s(((?:\s\w{1,})?)+)\1$/;
(regex.test(txt)) ? alert('passed') : alert('failed');
}
checkChar("GARNSEY B R & D B GARNSEY");
})()
\ 1の目的を誤解していますか?上記のように、正規表現を使用して実行しようとしていることを実行するための解決策はありますか?返信ありがとうございます。