![](/img/trans.png)
[英]PCRE REGEX to match one or more sentences containing a set of characters
[英]Concatenate two PCRE regex, one with unicode characters
我想為電話號碼寫一個正則表達式。 第一種模式使用英文數字,第二種模式使用波斯數字。 如何使用|
連接這些模式 ?
$pattern1 = '/^(\d{4})?\s?[1-9]{1}[0-9]{6}$/';
$pattern2 = '/^([\x{0660}-\x{0669}]{4})?\s?[\x{0661}-\x{0669}]{1}[\x{0660}-\x{0669}]{6}$/u';
這不起作用:
if (preg_match("($pattern1)|($pattern2)", $phone_number))...
並打印此警告:
Warning: preg_match(): Unknown modifier '|'
我也不確定/u
分隔符是否應放置在第二個模式的末尾,並且每個子模式(pattern1和pattern2)應具有其分隔符,或者整個串聯的pattarn應該僅具有一個分隔符(例如/pattern1|pattern2/u
)
preg_match
認為(
和)
是正則表達式的定界符,但不是,因為|
后,立即來了,這就是為什么它說|
是未知的修飾符。
嘗試使用此:
$pattern1 = '^(\d{4})?\s?[1-9]{1}[0-9]{6}$';
$pattern2 = '^([\x{0660}-\x{0669}]{4})?\s?[\x{0661}-\x{0669}]{1}[\x{0660}-\x{0669}]{6}$';
if (preg_match("/" . $pattern1 . "|" . $pattern2 . "/u", $phone_number))
請注意,我在連接模式之后放置了定界符。
簡單的方法是使用兩個單獨的帶有||的preg_match-statements 在if子句中。 另一種方法是重寫兩個regexp字符串,以將其組合為一個正確的字符串,這不僅包括將它們串聯在一起。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.