سؤال

كيفية preg_match على null (فارغة) سلسلة??

أنا بحاجة إلى شيء من هذا القبيل:

/([0-9]|[NULL STRING])/
هل كانت مفيدة؟

المحلول

ويمكنك استخدام ^ لمباراة ابتداء من الخط، و$ لمباراة نهاية الخط، وبالتالي التعبير ^$ العادية سوف تتطابق مع خط / سلسلة فارغة.

وسيتحقق الأمثلة المحددة الخاصة بك (خط / سلسلة تحتوي على رقم واحد أو كونها فارغة) أسهل مع ^[0-9]?$.

نصائح أخرى

ومع التعابير المنطقية PHP يمكن أن أقول لكم فقط:

/(\d|)/

قد يكون مفيد ...

ويمكنك أيضا تطابق حرف فارغة مع \0. هل هذا ما تعنيه [NULL STRING]؟ يمكن /([0-9]|\0)/ هذا التعبير.

وكان علي أن أفعل هذا، في جافا، لآخر 4 لعدد CC. في الحقل اختياري لذلك يمكن أن تكون إما فارغة أو 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]?)

يطابق "" (<empty string="">), "0", "1" .. "9"ولكن ليس "", (<space>), "A"(بدون أرقام) أو "123"(أي أطول سلسلة).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top