web-dev-qa-db-ja.com

Preg Match空の文字列

Null(空)文字列をpreg_matchする方法?

私は次のようなものが必要です:

/([0-9]|[NULL STRING])/
32
Denis Pshenov

^を使用して行の先頭に一致させ、$を使用して行の末尾に一致させることができるため、正規表現^$は空の行/文字列に一致します。

特定の例(1桁を含むか空の行/文字列)は、^[0-9]?$で最も簡単に実現できます。

61
Mikael Auno

PHPの正規表現を使用すると、次のように言うことができます。

/(\d|)/

それは便利かもしれません...

5
Jrgns

また、ヌル文字を_\0_と照合することもできます。 [文字列]の意味ですか?その式は/([0-9]|\0)/になります。

私はこれを、Javaで、CC番号の最後の4つについてしなければなりませんでした。このフィールドはオプションなので、空または4桁にすることができます。私の解決策は:

^\d{4}$|^$

典型的なJava形式でこれにnullを渡すと、nullポインタ例外が発生します。

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

しかし、私はそれがより多くのJava実装の問題であると感じています。

1
Pete B.

空の文字列を照合するのは簡単ではありませんが、空の文字列でないものはすべて一致する可能性があるため、向きを変えてnotを一致させることを検討してください反対(二重否定)。
この例では、ではないすべてのもの^)anon-digit(\D)ゼロまたは1回(?):

[^\D]?

(または特定のASCIIの場合:[^\x00-\x29\x3a-\xff]?、またはユニコード:[^\u0000-\u0029\u003a-\uffff]?

""(<空の文字列>)、 "0 "、" 1 ".." 9 "、ただし" "ではない(<space>)、" A "(数字以外)または "123 "(それ以上の文字列)。

0
iRon