簡體   English   中英

限制給定正則表達式中的特殊字符

[英]Restrict the special characters in the given regex

以下是我的正則表達式:

^[a-z0-9](?!.*?[^\na-z0-9]{2}).*?[a-z0-9]@gmail.com

其中接受-_但不是連續的,我想將其限制為[$%&(){}!] ,這不會發生,請提供相同的解決方案。

給定允許的正則表達式:

  1. abc-d@gmail.com
  2. a-b_c@gmail.com
  3. abc$d@gmail.com

    3) 無效。 表達式不應接受$,&,%,,,{,},(.).*在 gmail 地址中

盡管問題非常模糊和令人困惑,但我認為您正在尋找的正則表達式如下。

^[^`~!@#$%^&*()+={}\[\]|\\:;“’<>?๐฿]*$

對於不包含這些字符的任何字符串,這將返回 true

.*? 可能是導致您出現問題的原因。 它將不匹配任何內容,最多匹配所有內容,但匹配所需的內容最少。 但是它接受的字符沒有限制( .匹配任何東西)。

表達式不應接受$,&,%,,,{,},(.).*在 gmail 地址中

然后你會在你的正則表達式中需要類似(?![$&%!{}()*])的東西。 這是一個非捕獲的負前瞻,它將斷言沒有找到列出的字符。

接受-_但不是連續的

您可以將-_添加到接受的正則表達式中,並分別檢查重復項。 假設emailAddress中的 email 地址,類似於

var validation = "^(?![$&%!{}()*])[a-z0-9_-]+@gmail.com";
var containsDuplicates = emailAddress.IndexOf("--") > -1 && emailAddress.IndexOf("__") > -1;
var isValid = Regex.IsMatch(emailAddress, validation) && !containsDuplicates;  

現在,這將在有效的 gmail 地址(例如包含一個或多個句點的地址)上失敗,但這似乎是一個單獨的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM