java - 允许某些特殊字符的正则表达式模式

标签 java android regex validation

我正在使用正则表达式模式 ^[a-zA-Z0-9@.#$%^&*-_&\\\\]+$ 在 edittext android 中进行密码验证。我面临的问题是我的正则表达式无法限制像 ,;/ 这样的字符(即这应该受到限制,但目前允许)。请帮忙解决这个问题。谢谢你的回答

最佳答案

问题是您在字符类中间使用了未转义的连字符。改用这个:

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

连字符在正则表达式中间使用时表现得像一个范围,即 a-zA-Z0-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@.#$%^&*&\\\\-]+$

关于java - 允许某些特殊字符的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27119527/

相关文章:

android - 在 Android 上使用新的 AppID 更新 Facebook SDK session (使用 Cordova/PhoneGap)

Java 正则表达式,需要有关转义字符的帮助

javascript - 在 MVC 中验证字母数字

java - 子任务在自己的堆空间

java - Jnlp 文件未在 Internet Explorer 浏览器中下载

php - 如何将图像上传到现有的 MySql 数据库?

android - 仅在 Android 上使用 FormData 网络错误获取 React Native(带 expo)

php - 这个正则表达式是什么意思?

java - Android - 如果数据存在则获取 key (Firebase)

java - 应用程序中的错误报告