我想檢查用戶輸入是拉丁文還是西里爾文。我想讓用戶輸入一個只有拉丁或西裏爾字母的文本。我如何允許一個並否認另一個?我不希望用戶混合拉丁文和西里爾文。它只是一個或另一個。我是新來的正則表達式,並不能找出一種方法來做到這一點。 這是我到目前爲止。PHP的正則表達式檢查字符串是拉丁文還是西里爾文
!preg_match("/^([a-zA-Z]+|[\p{Cyrillic}]+)$/u", $inputstr)
另外,「/」在開頭和結尾處做什麼? 「/ u」是做什麼的? 任何幫助表示讚賞。
我想檢查用戶輸入是拉丁文還是西里爾文。我想讓用戶輸入一個只有拉丁或西裏爾字母的文本。我如何允許一個並否認另一個?我不希望用戶混合拉丁文和西里爾文。它只是一個或另一個。我是新來的正則表達式,並不能找出一種方法來做到這一點。 這是我到目前爲止。PHP的正則表達式檢查字符串是拉丁文還是西里爾文
!preg_match("/^([a-zA-Z]+|[\p{Cyrillic}]+)$/u", $inputstr)
另外,「/」在開頭和結尾處做什麼? 「/ u」是做什麼的? 任何幫助表示讚賞。
鏈接的文檔zerkms回答了您的一些問題。
首先,什麼是/
在開始和結束?這是圍繞你的正則表達式的delimeter pattern。
二,什麼是u
?這是一個modifier將模式字符串視爲unicode。
如果只允許一個char類型,使用分組如下:/^(?:\p{Cyrillic}+|\p{Latin}+)$/u
這應該在相同的字符串匹配或者西里爾字符或拉丁字符,但不能同時使用。
(?:stuff)
是一個分組subpattern匹配但不捕獲。
我做了麻煩,不能找出一種方法來解決我的問題。如果你能幫到你。如果你不能留下無益的評論 – khuderm 2013-02-17 06:29:26
至少關於斜線和'u'修飾符的問題(提示:Unicode以'u'開頭)應該很容易從文檔中得到答案。但更重要的問題是:什麼字符可能是「全拉丁」或「全西里爾」字符串?標點?空白?符號?哪個? – 2013-02-17 06:45:47
謝謝蒂姆。拉丁文和西里爾文僅包含字母,不包含puncuation,空格或符號。 – khuderm 2013-02-17 06:48:11