1

ユーザーの姓を取得するテキスト ボックスがあります。正規表現でハイフン (-) を 1 つだけ許可するにはどうすればよいですか?

^([a-z A-Z]*-){1}[a-z A-Z]*$
4

5 に答える 5

3

正規表現では、1 つだけ許可されます-。ただし、「Smith」、「Smith-Kennedy」は一致させたいが、「Smith-」は一致させたくない場合は、ハイフンを 2 番目のグループに移動する必要があります。

^[a-z A-Z]+(-[a-z A-Z]+)?$

ところで、ほとんどの場合、*を使用+する方がより良い解決策です。

于 2013-04-05T06:14:53.250 に答える
2

否定先読みを使用して、複数のハイフンを持つ文字列を拒否できます。

^(?![^-]+-[^-]+-)[a-zA-Z- ]+$

debuggex の一致したデモ

debuggexの別の一致したデモ。

debuggex のNot Matched Demoデモ。

于 2013-04-05T06:14:24.193 に答える
1

ハイフンは最大 1 つ必要であると想定しています。もしそうなら、あなたが望む正規表現は

^[a-z A-Z]*-?[a-z A-Z]*$

www.debuggex.comで視覚化できます。

于 2013-04-05T06:15:00.573 に答える
0

正規表現の問題は、ユーザーに-. オプションにするために使用でき?ます:

^[a-z A-Z]*\-?[a-zA-Z]*$
于 2013-04-05T06:08:05.343 に答える
0

一致する場合.*-.*-は、複数のハイフンがあり、そのような文字列は受け入れられません。

于 2013-04-05T06:10:39.577 に答える