如何使用 preg_match 匹配一个 null(空)字符串?
我需要类似下面的内容:
/([0-9]|[NULL STRING])/
如何使用 preg_match 匹配一个 null(空)字符串?
我需要类似下面的内容:
/([0-9]|[NULL STRING])/
你可以使用^
匹配行首,$
匹配行尾,因此正则表达式^$
可以匹配一个空行/字符串。
你的这个特定例子(一行/字符串包含单个数字或为空)可以使用最简单的正则表达式^[0-9]?$
实现。
使用PHP的正则表达式,您只需这样说:
/(\d|)/
这可能会有用...
你也可以使用\0
来匹配空字符。这是你所说的[NULL STRING]的意思吗?那个表达式可以是/([0-9]|\0)/
。
我需要用Java编写一个程序来验证信用卡号码的最后4位。这个字段是可选的,所以它可以为空,也可以是4位数字。我的解决方案如下:
^\d{4}$|^$
String myString = null;
last4Pattern.matcher(myString).matches(); //Null in this case.
由于匹配空字符串并不容易,但通常可以匹配任何非空字符串,请考虑将其反过来,并且不要匹配相反的(双重否定)。
在此示例中,匹配所有不是非数字字符(\D
)出现零次或一次(?
)的内容:[^\D]?
(或针对特定ASCII码:[^\x00-\x29\x3a-\xff]?
,或Unicode:[^\u0000-\u0029\u003a-\uffff]?
)
匹配“”(空字符串)、“0
”、“1
”...“9
”,但不匹配“”(空格)、“
A
”(非数字)或“123
”(任何更长的字符串)。
^\d?$
- 我比较喜欢\d
而不是[0-9]
,抱歉 :) - Amarghosh\d
,特别是因为它更容易/更短。不过,对于正则表达式初学者,在给出示例时,我喜欢坚持基础知识,因为像\d
这样的花哨东西并不适用于所有正则表达式风格。 - Mikael Auno\d
和[0-9]
的含义并不相同。例如,在.NET中,\d
匹配٣
(阿拉伯数字3)。 - Tim Pietzcker