2011-09-03 61 views
1

我想有一個匹配的正則表達式:匹配阿拉伯文/英文字母使用正則表達式

  • 阿拉伯字母。
  • 列表項目
  • 英文字母數字。
  • 3最大空間。
  • 4下劃線最大。

任何順序。


我試過不同的解決方案,但無法解決它。

這裏是我現在有:

preg_match('@^([^\W_]*\s){0,3}[^\W_]*[email protected]', $username) 

上述表達式允許:

  • 3位最大
  • 英語alpanumerics
  • 沒有下劃線允許
+0

阿拉伯字母 - 我正確理解你嗎?你的意思是這樣的:呃?您是否有任何疑問? – ZigZag

+0

以任何順序?是「a_o _e _u」還好,「_a_o_h_t _」不好,「你好」不好嗎?或者應該首先來信,然後空格,然後下劃線? – erikH

+0

[我如何在php中使用正則表達式匹配阿拉伯文字母](http://stackoverflow.com/questions/4145742/how-can-i-match-arabic-letters-using-regexp-in-php) – hakre

回答

0

我不知道阿拉伯字符,但下面的正則表達式應該與其他

([a-zA-Z0-9]{1,})\s{0,3}_{0,4} 

這將匹配 (字母)(0-3位)(0-4下劃線)

如果超過4個下劃線,最後一個將被省略 如果超過3個空格,則3個空格後的部分將被忽略。

編輯: 阿拉伯語字母:首先聲明包含所有阿拉伯字母 一個字符串,所以你必須

$arabic='all_arabic_letters'; 

那麼你的正則表達式的字符串將

$regex='[' . $arabic . ']{1,}([a-zA-Z0-9]{1,})\s{0,3}_{0,4}'; 

,並按如下與之匹敵:

preg_match($regex, $username); 
+0

%90幫了...... – user311509

3

您可以檢查您的Regex風味是否支持此\p{Arabic}\p{InArabic}

還與mb_ereg_match實驗()函數:http://si2.php.net/manual/en/function.mb-ereg-match.php

如果不工作,沒有比寫明確所有阿拉伯字母到表達沒有其他選擇。凌亂,但做的工作。

由於您使用的是PHP,您可以先將所有阿拉伯字符列入字符串變量,然後將該變量添加到正則表達式中,以實現代碼可管理性。

+0

他可以看看這裏:[我如何在php中使用正則表達式匹配阿拉伯文字母](http://stackoverflow.com/questions/4145742/how-can-i-match-arabic-letters-using-regexp-in-php ) – xanatos

+0

是的。如果他的正則表達式風格(版本)支持unicode。如果沒有,他必須使用我的2.nd解決方案。 –

相關問題