我有来自javascript的这段代码
/+\uFF0B0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9u/
在阅读了一些关于php& amp; \ u支持我将其转换为\ x
/\+\x{FF0B}0-9\x{FF10}-\x{FF19}\x{0660}-\x{0669}\x{06F0}-\x{06F9}/u
但我仍然无法在php中使用它
$phoneNumber = '+911561110304';
$start = preg_match('/\+\x{FF0B}0-9\x{FF10}-\x{FF19}\x{0660}-\x{0669}\x{06F0}-\x{06F9}/u', $phoneNumber,$matches);
匹配将为空!
如何解决这个问题?
答案 0 :(得分:1)
看起来您想要匹配ASCII加号或其日语Halfwidth等效项,然后是来自几个不同书写系统的一个或多个数字。但是,正如@mario观察到的那样,你似乎缺少一些方括号。 JavaScript版本可能应该是:
/[+\uFF0B][0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9]+/
(我最后看不到u
的任何原因,所以我放弃了它。)PHP版本将是:
'/[+\x{FF0B}][0-9\x{FF10}-\x{FF19}\x{0660}-\x{0669}\x{06F0}-\x{06F9}]+/u'
当然,这将允许混合使用相同数字的ASCII,阿拉伯语和半字符字符。如果这是一个问题,你需要稍微分解一下。例如:
'/\+(?:[0-9]+|[\x{0660}-\x{0669}]+|[\x{06F0}-\x{06F9}]+)|\x{FF0B}[\x{FF10}-\x{FF19}]+/u'