1

-ハイフン( )とアンダースコア( )を含む英数字の文字列が必要_です。しかし-_一人で来ることはできません。またはを含むいくつかの英数字テキストが-必要_です。

abc- allowed
abc_abc-xyz allowed
abc896 allowed
89abc allowed
abc_ not allowed
abc- not allowed
- not allowed
_not allowed
-- not allowed
________ --- not allowed

これ:

^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$

式は上記のすべてのことを行いますが、アンダースコアも-追加したいと思い_ます。そして-_最初または最後に来ることはできません。

4

5 に答える 5

1

これが私がこれを書く方法です:

^(?![-_])[-a-zA-Z0-9_]+(?<![-_])$

これがルービュラーです: http://www.rubular.com/r/7biWZhiiVn

^[-a-zA-Z0-9_]+$、必要な文字のみを含む文字列になります。-先読みと後読みにより、文字列が or で始まったり終わったりしないようにします_

は通常 と同等であるため[-a-zA-Z0-9_][-\w]おそらくに変更できますが、Unicode オプションを使用すると、他の言語の文字を含めるように意味を変更できます。\w[a-zA-Z0-9_]

于 2012-05-31T17:37:17.003 に答える
0

私はそれを次のように書き直します:

^[a-zA-Z0-9]+([-_]*[a-zA-Z0-9]+)*$
于 2012-05-31T17:33:01.443 に答える
0

あなたはそれに非常に近いです:

^[0-9a-zA-Z]([-_]*[0-9a-zA-Z]+)*$

より良いものは次のとおりです。

^[0-9a-zA-Z]([-_]+[0-9a-zA-Z]|[0-9a-zA-Z]+)*$
于 2012-05-31T17:29:49.440 に答える
0

このコードを試すことができます:

^[a-zA-Z0-9]*[a-zA-Z0-9_-]+[a-zA-Z0-9]*$
于 2012-05-31T17:32:41.833 に答える
0

これにより、単一の-and/or_をどちらの順序でも表示できますが、一緒に表示することはできません。ストレート英数字も使用できます。

^[a-zA-Z0-9]+[-_]{0,1}[^-_]+[-_]{0,1}[^-_]+$

この代替手段も機能するようです:

^[^-_]+[-_]{0,1}[^-_]+[-_]{0,1}[^-_]+$
于 2012-05-31T18:14:47.610 に答える