1

たとえば、前に2つのダッシュ(ハイフン)を持つことができる1〜10の数字のみを検証するために、正規表現に行き詰まりました。

--9

また

--10

また

--1

だがしかし

--11 or not --0

私はすべてのように思えます、例:

/(-\-\[1-10])/

なにが問題ですか?

編集1:

たくさんの実例をありがとうございます!!

このすべての前に数字にも検証したい場合はどうでしょうか。例:

8--10 but not 0--10 or not 11--11

私はこれを試しましたが、うまくいきませんでした:

/--([1-9]|10:[1-9]|10)\b/

編集2:

ああ、これは最終的に機能します:

/^(10|[1-9])--(10|[1-9])$/
4

5 に答える 5

3

試してみてください:

/\b(?:[1-9]|10)--(?:[1-9]|10)\b/

OPの編集に合わせて変更。

説明:

The regular expression:

(?-imsx:\b(?:[1-9]|10)--(?:[1-9]|10)\b)

matches as follows:

NODE                     EXPLANATION
----------------------------------------------------------------------
(?-imsx:                 group, but do not capture (case-sensitive)
                         (with ^ and $ matching normally) (with . not
                         matching \n) (matching whitespace and #
                         normally):
----------------------------------------------------------------------
  \b                       the boundary between a word char (\w) and
                           something that is not a word char
----------------------------------------------------------------------
  (?:                      group, but do not capture:
----------------------------------------------------------------------
    [1-9]                    any character of: '1' to '9'
----------------------------------------------------------------------
   |                        OR
----------------------------------------------------------------------
    10                       '10'
----------------------------------------------------------------------
  )                        end of grouping
----------------------------------------------------------------------
  --                       '--'
----------------------------------------------------------------------
  (?:                      group, but do not capture:
----------------------------------------------------------------------
    [1-9]                    any character of: '1' to '9'
----------------------------------------------------------------------
   |                        OR
----------------------------------------------------------------------
    10                       '10'
----------------------------------------------------------------------
  )                        end of grouping
----------------------------------------------------------------------
  \b                       the boundary between a word char (\w) and
                           something that is not a word char
----------------------------------------------------------------------
)                        end of grouping
----------------------------------------------------------------------
于 2013-08-27T13:33:41.283 に答える
2

これなら合いそう

/\-\-([1-9]|10)\b/

番号を取得したくない場合は、次を追加します?:

/\-\-(?:[1-9]|10)\b/
于 2013-08-27T13:29:37.823 に答える
2

正しい正規表現は

/\b--([1-9]|10)\b/

[最初の文字クラスを誤って としてエスケープしています\[。使用されている文字クラスも正しくありません。1これは、メンバto1および a 0ieを持つ文字クラスとして扱われます。これは、または のいずれか[10]に一致することを意味します。01

また、文字クラスの外でハイフン-をエスケープする必要はありません[]。ハイフンの前にある数字も検証するには、次を使用します

/\b([1-9]|10)--([1-9]|10)\b/
于 2013-08-27T13:34:40.023 に答える
2

文字クラスの外では、ハイフンをエスケープする必要はありません。また、文字クラス[1-10]1andにのみ一致します。 is equal to and that は and にのみ一致する0ためです。この正規表現を試してください:[1-10][10]10

/^--(10|[1-9])$/
于 2013-08-27T13:37:05.110 に答える