2012-02-14 67 views
0

這組RegEx /^[\p{L}\p{N}]+/u有什麼問題。當我的高級進入%openminded正則表達式返回false。我需要它來接受這種格式RegEx不接受%

%開明
100%開明
開明100%

我需要什麼,在表達補充的嗎?因此,即使用戶最初輸入了%或任何特殊字符,它也會接受輸入。

+2

因爲'\ p {L}'只是字母而'\ p {N}'只是數字---你不能在你的正則表達式中使用空格或百分號。 – 2012-02-14 03:10:46

+0

我很喜歡正則表達式,我會如何讓它接受空格或%?我需要用我的正則表達式更改 – user1149244 2012-02-14 03:27:49

+0

我已經像這樣製作了regEx/^ [\ p {L} \ p {N} \ p {S}] +/u。正如我已閱讀的PHP手冊S將匹配符號,但它仍然不工作 – user1149244 2012-02-14 03:55:34

回答

5

百分號不是\pS符號。這是一個\pP標點符號,如:

$ uniprops % 
U+0025 ‹%› \N{PERCENT SIGN} 
    \pP \p{Po} 
    All Any ASCII Assigned Basic_Latin Common Zyyy Po P Gr_Base Grapheme_Base Graph GrBase Other_Punctuation Punct Pat_Syn Pattern_Syntax PatSyn POSIX_Graph POSIX_Print POSIX_Punct Print Punctuation X_POSIX_Graph X_POSIX_Print X_POSIX_Punct 

你應該熟悉普通類(也許腳本),你最喜歡的文字屬於。下面是一些running unichars輸出樣本:

$ unichars -gs '[\pP\pS]' '\p{Block=Basic_Latin}' 
U+0021 ‭ ! GC=Po SC=Common  EXCLAMATION MARK 
U+0022 ‭ " GC=Po SC=Common  QUOTATION MARK 
U+0023 ‭ # GC=Po SC=Common  NUMBER SIGN 
U+0024 ‭ $ GC=Sc SC=Common  DOLLAR SIGN 
U+0025 ‭ % GC=Po SC=Common  PERCENT SIGN 
U+0026 ‭ & GC=Po SC=Common  AMPERSAND 
U+0027 ‭ ' GC=Po SC=Common  APOSTROPHE 
U+0028 ‭ ( GC=Ps SC=Common  LEFT PARENTHESIS 
U+0029 ‭) GC=Pe SC=Common  RIGHT PARENTHESIS 
U+002A ‭ * GC=Po SC=Common  ASTERISK 
U+002B ‭ + GC=Sm SC=Common  PLUS SIGN 
U+002C ‭ , GC=Po SC=Common  COMMA 
U+002D ‭ - GC=Pd SC=Common  HYPHEN-MINUS 
U+002E ‭ . GC=Po SC=Common  FULL STOP 
U+002F ‭/GC=Po SC=Common  SOLIDUS 
U+003A ‭ : GC=Po SC=Common  COLON 
U+003B ‭ ; GC=Po SC=Common  SEMICOLON 
U+003C ‭ < GC=Sm SC=Common  LESS-THAN SIGN 
U+003D ‭ = GC=Sm SC=Common  EQUALS SIGN 
U+003E ‭ > GC=Sm SC=Common  GREATER-THAN SIGN 
U+003F ‭ ? GC=Po SC=Common  QUESTION MARK 
U+0040 ‭ @ GC=Po SC=Common  COMMERCIAL AT 
U+005B ‭ [ GC=Ps SC=Common  LEFT SQUARE BRACKET 
U+005C ‭ \ GC=Po SC=Common  REVERSE SOLIDUS 
U+005D ‭ ] GC=Pe SC=Common  RIGHT SQUARE BRACKET 
U+005E ‭^GC=Sk SC=Common  CIRCUMFLEX ACCENT 
U+005F ‭ _ GC=Pc SC=Common  LOW LINE 
U+0060 ‭ ` GC=Sk SC=Common  GRAVE ACCENT 
U+007B ‭ { GC=Ps SC=Common  LEFT CURLY BRACKET 
U+007C ‭ | GC=Sm SC=Common  VERTICAL LINE 
U+007D ‭ } GC=Pe SC=Common  RIGHT CURLY BRACKET 
U+007E ‭ ~ GC=Sm SC=Common  TILDE 

因此,無論正確普通類添加到您的類,像

[\pL\pN\p{Po}] 

或者只是添加你所需要的特定的字符。順便說一句,任何想要\pL的東西幾乎總是也要\pM