0

正規表現が^[\\p{L}\\d._]*\\p{L}+[\\p{L}\\d._]*$ あり、これは正常に機能します

  1. ABC123de(英数字 - 大文字と小文字を区別しない)
  2. ABCDEfgh(アルファベットのみ - 大文字と小文字を区別しない)
  3. Abc_.123(使用できる特殊文字は_とのみです.)

ただし、次のような入力を受け入れています

  1. balaji_,jacob__最後にあります)
  2. 2balaji,2jacob(数字で始まる)

上記の 2 つのテスト ケースを制限するために、上記の正規表現を変更できますか?

4

2 に答える 2

1

確かに、次のように最初と最後に適切な制限を追加します。

^\p{L}[\p{L}\d._]*\p{L}+[\p{L}\d._]*[\p{L}\d.]$
于 2012-07-20T10:16:56.837 に答える
0

これの最初の部分:

^[\p{L}\d._]*\p{L}+[\p{L}\d._]*$

0個以上を許可するhas *which は、最初に問題 #2 を修正するために、それを: one or more:に変更します。+

^[\p{L}\d._]+\p{L}+[\p{L}\d._]*$.

最後にアンダースコアを防ぐには、 を含まない別の句が必要です_:

^[\p{L}\d._]+\p{L}+[\p{L}\d._]*[\p{L}\d.]?$.

ただし、これでも a _alone は許可されます (最初の部分のマッチングのみから)。唯一のアンダースコアが必要ない場合は、最初の句から削除するだけです。

^[\p{L}\d.]+\p{L}+[\p{L}\d._]*[\p{L}\d.]?$.

アンダースコアで開始する機能が必要な場合は、単一文字列と二重文字列の許容されるケースについてさらに情報が必要だと思います.

于 2012-07-20T10:18:49.550 に答える