2013-10-18 9 views
12

私は剃刀ビューページでjavascriptでメールアドレス検証を行っています。 私が使用しようとしている正規表現は、Validate email address in JavaScript?剃刀で '@'を含むjavascript正規表現を使用

と似ていますが、正規表現に '@'文字が含まれているため、Webアプリケーションを実行しようとするとパーサーエラーが発生します。

は私の正規表現は、私は元の正規表現で... @@ * ...、これはコンパイルエラーを解消するために「@」文字を追加しようとしました

/^...otherpart @* ... other part$/ 

のように見えるが作るようです正規表現は機能しなくなります。 (我々は剃刀エンジンを使用していない別のWebアプリケーションでこれを使用しています。

「@」文字をエスケープする方法はありますか?

+0

スクリプトブロックを ''とラップしてみましたか? – Jasen

+0

@ジャセン私は試していませんトリック。明日は試して結果をお知らせします。 –

+0

このスクリプトを使用する場合は、いくつかの場所があります。それは、それを自分の.jsファイルに入れることをお勧めします。最大/最小などの個々の検証ルールは、要素のデータ属性に入れられ、jQueryを介して読み取られる可能性があります。 – jfrankcarr

答えて

16

の前に別の文字を追加して@@をエスケープして、*を残してみてください。これが機能しない場合は、機能の周りに<text></text>を追加して、Razorに内容を解析しないように指示します。あるいは、Javascriptを別のファイルに入れて、ニーズを満たすことができます。

@:@@

+1

私はいくつかのことを試みました... ' 'と' @: 'で行を始めますが、' @@ 'だけがそのトリックを行うように見えます。もう1つのオプションは、別のファイルを使用することです。 – Jasen

+0

は合意しましたが動作しません。 – Jasen

+2

私は、Razorパーサーを満足させるためにファンキーな正規表現パターンを書くのではなく、すべてを別のファイルに入れることになります。エスケープ文字について考える必要がなく、正規表現パターンを十分に理解することが難しい場合もあります。 – Jasen

8

場所のコードブロック、あなたは、文字列内に複数の@@を持っているいくつかの理由であれば代わりに、@の正規表現の内側に、次を置き:

@('@') 

上記シングルにレンダリングされます@。

あなたの例では、となります:

/^...otherpart @('@')* ... other part$/ 
+0

これは受け入れられる回答である必要があります! @@を2倍にするとREGEXが変更されます。これはあなたが望むものではありません。それでも、私は、剃刀で@記号を描くためのより良い方法があることを望みます。\ @ –

0

は単純に二重の@@を使用しています。
それは私のために働くと私はそれが唯一の方法だと思う。

関連する問題