正则表达式匹配数字,#@%标志

时间:2011-07-15 16:13:13

标签: php regex

我正在尝试编写一个匹配所有数字(0-9)和#@%符号的正则表达式。

我尝试过 ^ [0-9#%@] $ ,但它不起作用。

我希望它匹配,例如:1234345,2233,1,3 @,%@,9,2374,@@ @@ @或其他......

一定有什么遗失?

谢谢

5 个答案:

答案 0 :(得分:4)

你几乎是对的......所有你缺少的是告诉正则表达式可能不止一次这些字符,如*(0或更多)或{{1} (1或更多)。

+

使用的^[0-9#%@]+$ ^分别表示字符串的开头和结尾。确保你的字符串只包含那些字符,否则它将不起作用(例如“数字是89#1”将不起作用,因为字符串以0-9,#,%或@)以外的字符串开头。

答案 1 :(得分:2)

您的模式^[0-9#%@]$仅匹配一个字符长的字符串。 []构造匹配单个字符,^和$ anchors意味着在[]匹配的字符之前或之后不能有任何内容。

如果您只是想知道字符串中是否包含其中一个字符,那么[0-9#%@]就会这样做。如果要匹配必须至少包含一个字符的字符串,请使用^[0-9#%@]+$。 “+”表示匹配前一项中的一个或多个。如果您还想匹配空字符串,请使用[0-9#%@]*。 “*”表示匹配前一项中的零个或多个。

答案 2 :(得分:1)

应该是/^[0-9#%@]+$/+是一个限定符,表示“前面的一个或多个”。

目前正则表达式的问题在于,它只能匹配一个字符,该字符可以是数字,也可以是#%@。这是因为^$字符分别匹配行的开头和结尾。通过添加+限定符,您表示要匹配前面一个或多个字符类,并且整行由指定字符类中的一个或多个字符组成。

答案 3 :(得分:0)

删除插入符号(^),用于从字符串的开头匹配。

答案 4 :(得分:0)

你忘记了“+” ^ [0-9#%@] + $必须工作