33

如何 preg_match 为空(空)字符串?

我需要类似的东西:

/([0-9]|[NULL STRING])/
4

5 回答 5

62

您可以使用^来匹配行首和$行尾,因此正则表达式^$将匹配空行/字符串。

您的具体示例(包含单个数字或为空的行/字符串)最容易使用^[0-9]?$.

于 2009-11-27T16:28:07.883 回答
5

使用 PHP 的正则表达式,您可以说:

/(\d|)/

可能有用...

于 2009-12-29T20:22:33.747 回答
1

您还可以将空字符与\0. 这就是您所说的 [NULL STRING] 的意思吗?那个表情可能是/([0-9]|\0)/

于 2009-11-27T16:34:25.810 回答
1

我必须在 Java 中为 CC 号码的最后 4 位执行此操作。该字段是可选的,因此它可以是空的,也可以是 4 位数字。我的解决方案是:

^\d{4}$|^$

以典型的 java 方式传递 null 会导致空指针异常:

String myString = null;
last4Pattern.matcher(myString).matches(); //Null in this case.

但是,我觉得这更像是一个Java实现问题。

于 2013-07-11T14:18:43.773 回答
0

由于匹配空字符串并不容易,但通常可以匹配任何非空字符串,因此请考虑将其反转而不匹配相反的内容(双重否定)。
在此示例中,所有不是( ^) 的数字 ( \D) 零次或一次 ( ?):

[^\D]?

(或特定的 ascii:[^\x00-\x29\x3a-\xff]?或 unicode: [^\u0000-\u0029\u003a-\uffff]?

匹配 "" ( <empty string> )、 " 0"、 " 1" .. " 9",但不匹配 " "、 ( <space> )、 " A" (非数字) 或 " 123" (任何更长的字符串)。

于 2018-04-26T17:16:23.670 回答