javascriptの検索において、検索パターンを正規表現で指定し、gオプションで全検索とした場合です。
1度目にマッチした文字列のうち一部が、後に続く別の文字列と組み合わさると、新たに検索パターンとマッチする場合、これについてもマッチさせる方法はないでしょうか。
var x = 'ペンギン3年4月5日'.match(/\D\d[年月日]/g);
document.write( x );
これを実行すると、
「ン3年」
しか表示されませんが、
「ン3年」「年4月」「月5日」
の3つとも表示させるようにしたいのです。
No.1
- 回答日時:
そのコードを私の環境で実行すると
「ン3年」
ではなく
「ン3年,月5日」
となるわ。
それはさておき、「年4月」も取得したいとなると
複雑なコードを書くしかないわ
普通にマッチングを行うと
ペンギン3年4月5日
最初は「ペ」から開始して
「ン3年」を検索し終わると
その次の開始地点は「4」からになっちゃう
なので、開始地点を変えて再度マッチングするように
作らないといけないわ
substringやRegExp.indexを使ってやるしかないわね
めんどくさいけど
例に挙げたコードの実行結果は、確かに
「ン3年,月5日」
でした。すみません。
やはり一筋縄ではいかないのですね。
substringやRegExp.indexで2文字目から再検索という方法、ありがとうございます。
No.2
- 回答日時:
あまり深く考えていないのですが、年月日をそれぞれ2個に置き換えてから検索してはどうでしょうか。
var x = 'ペンギン3年4月5日'.replace(/([年月日])/g, '$1$1').match(/\D\d[年月日]/g);
document.write( x );
これは考えつきませんでした。
今回の実際のコードは、このあともう少し複雑な置換を何度か行うため、これではさらに手順が増えることになりやや適さない方法でしたが、今後何かで使わせていただくと思います。
ありがとうございます。
No.3ベストアンサー
- 回答日時:
そのような処理ではmatchは不向きですね…。
execなら(イレギュラーな使い方をすることで)何とか対応できます。
var str = "ペンギン3年4月5日";
var reg = /\D\d[年月日]/g;
var x;
while(x = reg.exec(str)) {
document.write(x);
reg.lastIndex--;
}
不勉強でexecをよく知らなかったのですが、これで行けそうです。
execのリファレンスを今読んでいます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/10 08:51
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Access(アクセス) Accessフォーム 一部のレコードだけを抽出する方法について 1 2022/06/28 18:45
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- エッセイ・随筆 尋常小学校唱歌『さくら さくら』の解釈について以下のものは成立しますか?普通じゃおもろない? 7 2023/02/26 16:52
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/08 09:05
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) 数式の置換がうまく行かない 6 2022/05/04 15:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
初心者です。gulpでコンパイル...
-
階層別の組織図の自動作成について
-
React hooksが値を返して配列変...
-
特定の文字列を複数抜き出した...
-
追加ボタンを押した際に ok ボ...
-
ジャバスクリプトについて。
-
GASでGoogleフォームの自動返信...
-
フロントエンドフレームワーク...
-
画面遷移を行わずに同一ページ...
-
セレクトを全て選択されていな...
-
ブックマークレットについて
-
①入力フォーム→②確認表示画面→③...
-
プログラムについて。
-
Q&A掲示板の入力フォームに文字...
-
メールフォームの日付入力フォ...
-
二次元配列を使って順位をだす...
-
iOSのみダブルタップが必要
-
jsで質問です。 displayプロパ...
-
var exports = exports || {}; ...
-
HTMLタグに複数のクラスを設定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
二次元配列を使って順位をだす...
-
プログラムについて。
-
Q&A掲示板の入力フォームに文字...
-
メールフォームの日付入力フォ...
-
iOSのみダブルタップが必要
-
ジャバスクリプトについて。
-
画面遷移を行わずに同一ページ...
-
特定の文字列を複数抜き出した...
-
指定時間になったら、WEBサイト...
-
追加ボタンを押した際に ok ボ...
-
①入力フォーム→②確認表示画面→③...
-
スマホ上で、左右スワイプで次...
-
読み込んだQRコードをフォーム...
-
フロントエンドフレームワーク...
-
React hooksが値を返して配列変...
-
GASでGoogleフォームの自動返信...
-
初心者です。gulpでコンパイル...
-
階層別の組織図の自動作成について
-
HTMLで作った時報アプリが動き...
-
jQueryで同じクラス名のものを...
おすすめ情報