我正在使用正则表达式模式 ^[a-zA-Z0-9@.#$%^&*-_&\\\\]+$
在 edittext android 中进行密码验证。我面临的问题是我的正则表达式无法限制像 ,;/
这样的字符(即这应该受到限制,但目前允许)。请帮忙解决这个问题。谢谢你的回答
最佳答案
问题是您在字符类中间使用了未转义的连字符。改用这个:
^[a-zA-Z0-9@.#$%^&*_&\\\\-]+$
连字符在正则表达式中间使用时表现得像一个范围,即 a-z
或 A-Z
或 0-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/