2016-06-25 4 views
-5

[\u0600-\u06FF\uFB8A\u067E\u0686\u06AF .!?:)(,;1234567890%-_#]+$
以前の正規表現では、すべてのアラビア語の文と数字がマスキングと見なされます。はブロック内の特定の正規表現を許可します

今、正規表現は、文章の中に含まれる任意の他の電子メールアドレスを一致させる必要があります。(スペースの前と後のメールは必要ありません)

マッチする正規表現になりますか?

+1

正規表現は非常に徹底的に文書化され、簡単にWeb上にあり、このサイト上で、あなたが尋ねる前に十分な調査を行っていることが期待されています。_「私は正規表現に堪能ではないので、あなたが私を助けてくれたらありがとう」と言っている_は、「私は研究をするのが面倒です。私に答えてください」と解釈されます。 [ヘルプ]にアクセスして[質問]を読んで、このサイトの内容を理解すると役立ちます。 –

+0

そのように解釈されるべきではない@Jim Garrison、私はその前に私の努力を提出しました。私が探している答えは、中間開発者にとってははるかに難しいです。 – Mehrdad

+0

現在の正規表現の仕組みを理解していますか?はいの場合、選択した範囲のすべての文字を選択するために同じロジック/メカニズムを適用することを止めているのは何ですか? – Pshemo

答えて

0

[OK]を、最初のあなたはおそらく、あなたの正規表現を記述する必要があります。あなたの%-_は「_から%からコードで任意のシンボルを意味している[...]内部ここ

[\u0600-\u06FF\uFB8A\u067E\u0686\u06AF \.!?:)(,;1234567890%\-_#]+$ 

%\-_%または-または_を意味/[%-_]/.exec(")")を試して、私が意味するものを参照してください:)シンボルはその範囲にあります。.はこの場合正しく動作しますが、.シンボルであり、「任意のシンボル」ではないことを強調する\.も入れます。

ここでは、テキストで電子メールを許可したいと考えています。まあit's not a simple task、単純な場合のために、あなたは(それらの複雑な解決策の一つでもよい)、電子メールrexepを選ぶと、あなたは私は簡単なを使用します(このようなあなたの正規表現にそれを連結する必要があります。とにかく

[\w\-][email protected][\w\-\.]+\.\w+ 

のようなものを使用することができます上に示した1):

(?:[\u0600-\u06FF\uFB8A\u067E\u0686\u06AF \.!?:)(,;1234567890%\-_#]|[\w\-][email protected][\w\-\.]+\.\w+)+$ 

これは、電子メールの前後にスペース/タブ/句読点がある場合、これはチェックしないことを意味し、ただし、空白を処理しません。これは、このテキストが有効になることを意味し、あまりにも:

<arabic> <arabic> <arabic>email<arabic> <arabic>. 
         /\ /\ no whitespace or punctuation here 
+0

私は-4を手に入れましたが、私の問題は解決しました。ありがとうございました。 – Mehrdad

+0

@Mehrdadあなたはおそらくまだ編集して質問を明確にするために最善を尽くすべきです。残念ながら、私の推測は正しいが、理解するのは難しい。もしあなたがかなりうまく行けば、私はそれをアップヴォートすることさえできます。とにかく、あなたは大歓迎です。 – YakovL

+0

ただの簡単な質問ですが、正規表現の始めには ''?: ''は何ですか? – Mehrdad

0

あなたの正規表現を見ると、範囲はすでに%-_です。 %から_までです。

または別の言い方をすれば、[\x25-\x5F] これらの数字はなぜですか?
\ xは16進数のエスケープ文字です。 ascii table

だから、@とスペースの間の文字をマッチさせたいのですが?
範囲[\x20-\x40]または[ [email protected]]のいずれかを使用できます。

しかし私の推測では、正規表現で以前にマッチした文字を除外したくないということです。 (f.e.、A-Z範囲)

次に、あなたの正規表現が短く作ることはトリックを行う必要があります。ほとんどのシンボルは、正規表現から削除されたこと

[ -_\u0600-\u06FF\uFB8A\u067E\u0686\u06AF]+$ 

注意を。
これは既にそれらがすでに範囲内にあるためです。

関連する問題