2012-02-14 11 views
0

RegEx /^[\p{L}\p{N}]+/uのこのセットには何が問題ですか?私のシニア入力時%openminded正規表現はfalseを返します。私はそれがRegExは受け付けていません%

% openminded
100%openminded
openminded 100%

は、私は何を表現して追加する必要があります。この形式を受け入れる必要がありますか?ユーザーが%を最初に入力した場合でも入力を受け入れるようにするか、特殊文字を入力します。

+2

'\ p {L}'は単なる文字で、 '\ p {N}'は単なる数字なので、正規表現ではスペースやパーセント記号を使用できません。 –

+0

私は正規表現にnoobを使用していますが、スペースや%を受け入れる方法は?正規表現で変更する必要があるもの – user1149244

+0

このようなregExを作成しました/^[\ p {L} \ p {N} \ p {S}] +/u。私がPHPマニュアルで読んだことは、シンボルとマッチしますが、まだ動作しません – user1149244

答えて

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が欲しいです。

関連する問題