0

これは私が持っている正規表現です。文字列がアンダースコアで始まったり終わったりしないようにする必要があります。アンダースコアが間に表示される場合があります。

/^[a-zA-Z0-9_.-]+$/

私が試してみました

(?!_)

しかし、うまくいかないようです

許可された文字列:

abcd
abcd_123

許可されていない文字列:

abcd_
_abcd_123
4

3 に答える 3

1

逆の方法でこれにアプローチすることができます、

次のように、開始アンダースコアと終了アンダースコアが一致するものをすべて確認してください。

/^_|_$/

^_         #starts with underscore
|          #OR
_$         #ends with underscore

そして、一致するものを排除します。上記の正規表現ははるかに読みやすくなっています。

チェック:http ://www.rubular.com/r/H3Axvol13b

または、より長い正規表現を試すことができます。

/^[a-zA-Z0-9.-][a-zA-Z0-9_.-]*[a-zA-Z0-9.-]$|^[a-zA-Z0-9.-]+$|^[a-zA-Z0-9.-][a-zA-Z0-9.-]$/

^[a-zA-Z0-9.-]     #starts with a-z, or A-Z, or 0-9, or . -
[a-zA-Z0-9_.-]*    #anything that can occur and the underscore
[a-zA-Z0-9.-]$     #ends with a-z, or A-Z, or 0-9, or . -
|                  #OR
^[a-zA-Z0-9.-]$    #for one-letter words
|                  #OR
^[a-zA-Z0-9.-][a-zA-Z0-9.-]$      #for two letter words

チェック: http ://www.rubular.com/r/FdtCqW6haG

于 2013-03-19T06:59:24.493 に答える
1

難しすぎない!

/^[^_].*[^_]$/

「行頭のアンダースコアを除く^[^_]任意の文字 ( )、次に任意の文字 ( .*)、行末の前のアンダースコアを除く任意の文字 ( [^_]$)。」

これには、文字列を検証するために少なくとも 2 文字が必要です。1 文字行を許可する場合:

/^[^_](.*[^_]|)$/

「行を開始するためのアンダースコア以外のすべて、および行末の前にいくつかの文字とアンダースコア以外の文字を追加するか、または行末をすぐに終了します。

于 2013-03-19T07:35:02.507 に答える
0
/^[a-zA-Z0-9.-][a-zA-Z0-9_.-]+[a-zA-Z0-9.-]$/

これを試して

説明:
最初のセクションでは[a-zA-Z0-9.-]、正規表現は大文字と小文字のアルファベット、数字、ドット、およびハイフンのみを使用できます。
次のセクションでは[a-zA-Z0-9_.-]+、正規表現は、小文字または大文字のアルファベット、数字、ドット、ハイフン、またはアンダースコアである単一または複数の文字を探します。
最後の部分 は[a-zA-Z0-9.-]、入力がアンダースコアで終わるように制限する最初の部分と同じです。

于 2013-03-19T06:58:20.523 に答える