如何 preg_match 为空(空)字符串?
我需要类似的东西:
/([0-9]|[NULL STRING])/
您可以使用^来匹配行首和$行尾,因此正则表达式^$将匹配空行/字符串。
您的具体示例(包含单个数字或为空的行/字符串)最容易使用^[0-9]?$.
使用 PHP 的正则表达式,您可以说:
/(\d|)/
可能有用...
您还可以将空字符与\0. 这就是您所说的 [NULL STRING] 的意思吗?那个表情可能是/([0-9]|\0)/。
我必须在 Java 中为 CC 号码的最后 4 位执行此操作。该字段是可选的,因此它可以是空的,也可以是 4 位数字。我的解决方案是:
^\d{4}$|^$
以典型的 java 方式传递 null 会导致空指针异常:
String myString = null;
last4Pattern.matcher(myString).matches(); //Null in this case.
但是,我觉得这更像是一个Java实现问题。
由于匹配空字符串并不容易,但通常可以匹配任何非空字符串,因此请考虑将其反转而不匹配相反的内容(双重否定)。
在此示例中,所有不是( ^) 的非数字 ( \D) 零次或一次 ( ?):
[^\D]?(或特定的 ascii:[^\x00-\x29\x3a-\xff]?或 unicode: [^\u0000-\u0029\u003a-\uffff]?)
匹配 "" ( <empty string> )、 " 0"、 " 1" .. " 9",但不匹配 " "、 ( <space> )、 " A" (非数字) 或 " 123" (任何更长的字符串)。