Wei Ma
Wei Ma

Reputation: 3165

Using javascript regex containing '@' in razor

I am performing email address validation with javascript in a razor view page. The regex I am going to use is similar to the one proposed at Validate email address in JavaScript?

However, because the regex contains an '@' character, I am getting parser error when try to run the web app.

my regex looks like

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

I tried to add an '@' character to make the in the origin regex ... @@* ..., this eliminated the compilation error but seems to make the regex stops working. (we have used it in another web app that does not use razor engine, so I know it works).

Is there any other way to escape the '@' character?

Upvotes: 21

Views: 18261

Answers (4)

Ghebrehiywet
Ghebrehiywet

Reputation: 934

It's better to use @('@') instead of @@ (not working for me). Example

<input class="form-control" pattern="^[a-zA-Z@('@')]{5,20}$"/>

Upvotes: 0

keyone2693
keyone2693

Reputation: 679

Simply just use double @@.
It works for me and I think that is the only way.

Upvotes: 0

Shadi Alnamrouti
Shadi Alnamrouti

Reputation: 13278

Put the following inside the regEx instead of @:

@('@')

The above will be rendered to a single @.

Your example will become:

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

Upvotes: 16

hwnd
hwnd

Reputation: 70732

You can add another @ in front of it to escape @@, try leaving out the quantifer *. If this doesn't seem to work then add <text></text> around the function, it tells Razor to not parse the contents. Alternatively you can put Javascript in a separate file to accomplish your needs.

If for some reason you have multiple @@ in your string, place code blocks ahead @:@@

Upvotes: 27

Related Questions