2

合法な次の文字列があります。

1-5,10-15

次の正規表現を使用すると、一致に対して false が返されます。

^[^-\s]*-?[^-\s]*$

次のような場合にうまく機能します

  • 1-5,10
  • 1,5

これらはすべて合法です。ただし、カンマ区切りの範囲は処理されません。私は何が欠けていますか?

4

8 に答える 8

6

コンマの扱いはどこですか?regexperで正規表現を視覚化してみてください

今これを試してください:

^(\d+-?\d+)(?:\,(\d+-?\d+))+$

regexper.com のスクリーンショット

更新: キャプチャに対して非常に具体的なニーズがある可能性があるため、私の正規表現は解決策ではありません。ただし、その気の利いたツールは、正規表現が何をするかを確認すると、タスクに役立つ場合があります。

于 2013-07-12T12:32:43.450 に答える
1

コンマ区切りの文字列を分割するための私が知っている最良の正規表現は次のとおりです。

",(?=(?:[^\""]*\""[^\""]*\"")*(?![^\""]*\""))"

コンマを含む引用符内のエントリは分割されません。

例: Hello, There, "You, People" は

こんにちは

そこには

あなたたち

于 2013-07-12T12:29:32.033 に答える
0

これもうまくいくはずだと思います。

^\d*(-\d*)?,\d*(-?\d*)?$

それが役に立てば幸い。

于 2013-07-12T12:37:05.010 に答える
0

(\d+)-(\d+)すべての範囲を取得するようなものが必要になる場合があります。例はこちら

于 2013-07-12T12:30:59.350 に答える