6

これに一致する正規表現を作成するにはどうすればよいですか

123/456

123/456/?

しかし、これではありません

123/456/

私は2番目に欲しい/それは?が続く必要があります。

たとえば、これに一致させたい

'123/456'.match(X) // return ['123/456']
'123/456/?'.match(X) // return ['123/456/?']
'123/456/'.match(X) // return null

アップデート

私は1つの重要なことを言うのを逃しました。'?'で終わらせてはいけません。'123/ 456 /?hi'のような文字列も一致する必要があります

4

5 に答える 5

5

この正規表現を試すことができます:\d{3}/\d{3}(/\?.*)?

一致します

  • 3桁
  • 続いて/
  • 3桁が続く
  • 続いて/?any_text(例/?hi)(オプション)

この例^では、やのような正規表現アンカーを使用し$ていますが、ターゲット文字列との照合のみを試みる場合は必須ではありません。

var result = '123/456/?hi'.match(/\d{3}\/\d{3}(\/\?.*)?/);
if (result) {
    document.write(result[0]);
}
else {
    document.write('no match');
}
于 2012-04-24T07:00:30.347 に答える
4

この正規表現は機能します/^\d{3}\/\d{3}(\/\?.*)?/

このJSFiddleを参照してください。

注:任意の桁数と一致する必要があると思われる場合は、の\d+代わりにを使用して\d{3}ください。後者は正確に3桁に一致します。

于 2012-04-24T07:00:39.167 に答える
1

はい、どうぞ:

[0-9]+/[0-9]+(/\?[^ ]*)?
于 2012-04-24T07:27:10.043 に答える
0

他にどんなルールがありますか?

以外の最後の文字を持つすべての文字列を受け入れたい場合は?、使用します"[^?]$"

123/456で始まり、必要に応じて で終わる文字列を受け入れたい場合は/?、使用します"^123/456(/\?)?$"

于 2012-04-24T07:02:04.790 に答える
0

私はこれがうまくいくと思います:

'123/456'.match(/^123\/456(\/\?)?$/) // returns ["123/456", undefined]
'123/456/'.match(/^123\/456(\/\?)?$/) // returns null
'123/456/?'.match(/^123\/456(\/\?)?$/) // returns ["123/456/?", "/?"]

編集:他のケースを追加

于 2012-04-24T07:03:17.683 に答える