簡體   English   中英

正則表達式模式允許某些特殊字符

[英]Regex pattern allowing certain special characters

我在edittext android中使用正則表達式^[a-zA-Z0-9@.#$%^&*-_&\\\\\\\\]+$進行密碼驗證。 我面臨的問題是我的正則表達式無法限制字符,如,;/ (即這應該受到限制,但目前允許)。 請幫助。 感謝您的回答

問題是你在字符類的中間使用了未轉義的連字符 請改用:

^[a-zA-Z0-9@.#$%^&*_&\\\\-]+$

在正則表達式中間使用時,連字符的行為類似於范圍,即azAZ0-9等。在正則表達式中,范圍為*-_

*_ ,它將匹配以下字符:; /等。查看此ascii圖表以供參考(它將匹配此表中的所有內容):

                    42  *    43  +    44  ,    45  -    46  .    47  /
  48  0    49  1    50  2    51  3    52  4    53  5    54  6    55  7
  56  8    57  9    58  :    59  ;    60  <    61  =    62  >    63  ?
  64  @    65  A    66  B    67  C    68  D    69  E    70  F    71  G
  72  H    73  I    74  J    75  K    76  L    77  M    78  N    79  O
  80  P    81  Q    82  R    83  S    84  T    85  U    86  V    87  W
  88  X    89  Y    90  Z    91  [    92  \    93  ]    94  ^    95  _

PS:你的正則表達式可以縮短為:

^[\\w@.#$%^&*&\\\\-]+$

關鍵在於這里的一小部分*-_這是從“ ”到“_”的一系列字符 如果你想只有“ ”,“ - ”和“_”,你需要逃避“ - ”。 你最后還有一個重復字符“\\”

工作正則表達式將是: ^[a-zA-Z0-9@.#$%^&*\\-_&\\\\]+$

為了將來參考,您可以使用RegExr 當你將鼠標懸停在正則表達式的部分區域時,它會很好地分解它們並解釋它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM