我正在尝试编写一个匹配所有数字(0-9)和# @ %符号的正则表达式。
我试过 ^ [0 - 9 # % @) $ ,它不起作用。
我希望它匹配,例如:1234345,2323,1,3 @,%@,9,23743,@@@@@,或任何…
一定是少了什么?
谢谢
你几乎是对的…您所缺少的只是告诉正则表达式可能存在不止一次的这些字符,例如*
(0或更多)或+
(1或更多)。
^[0-9#%@]+$
使用^
和$
分别表示字符串的开始和结束。确保你的字符串只包含这些字符,否则它将不起作用(例如:"数字是89#1"不能工作,因为字符串以0-9(#、%或@)以外的东西开头。
模式^[0-9#%@]$
只匹配一个字符长的字符串。[]结构匹配单个字符,^和$锚点表示在[]匹配的字符之前或之后不能出现任何内容。
如果您只是想知道字符串中是否有这些字符之一,那么[0-9#%@]
将执行此操作。如果要匹配必须至少包含一个字符的字符串,则使用^[0-9#%@]+$
。"+"表示匹配前面的一个或多个项。如果还想匹配空字符串,则使用[0-9#%@]*
。"*"表示匹配前一项中的零个或多个
应该是/^[0-9#%@]+$/
。+
是一个限定符,意思是"前面的一个或多个"。
当前regex的问题是它只匹配一个字符,该字符可以是数字或#
, %
或@
。这是因为^
和$
字符分别匹配行首和行尾。通过添加+
限定符,您表示希望匹配前面的一个或多个字符类,并且整行由指定字符类中的一个或多个字符组成。
删除插入符号(^),它用于从字符串的开头匹配。
你忘了"+"^[0-9#%@]+$必须工作