[英]Exclude Certain characters from Regex
我有以下正則表達式,我很難排除某些字符。 我想從字符串中排除£%&+¬¦éúíóáÉÚÍÓÁ
。
\S*(?=\S{7,30})(?=\S*[a-z])(?=\S*[A-Z])(?=\S*[\d])\S*
我已經嘗試過以下沒有運氣了:
/\S*(?=\S{7,30})(?=\S*[a-z])(?=\S*[A-Z])(?=\S*[\d])(?=[^£%&+¬¦éúíóáÉÚÍÓÁ])\S*/
任何建議或指示都會很棒,謝謝。
您必須嘗試匹配沒有指定字母的字符串。 你需要錨定你的前瞻,只有你能達到你需要的方式。
^(?!\S*[£%&+¬¦éúíóáÉÚÍÓÁ])(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)\S{7,30}$
^^^^^^^^^^^^^^^^^^^^^^^^
見演示
所有前瞻都在開頭檢查字符串,長度檢查可以移動到結尾。 你需要^
和$
anchors來啟用長度檢查。
如果你匹配較大字符串中的單詞 ,你可以用字邊界\\b
替換^
和$
:
\b(?!\S*[£%&+¬¦éúíóáÉÚÍÓÁ])(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)\S{7,30}\b
或者看似(如果這些不是單詞,而是一些符號序列):
(?<!\S)(?!\S*[£%&+¬¦éúíóáÉÚÍÓÁ])(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)\S{7,30}(?!\S)
你的正則表達式與那些字符匹配,因為\\S
匹配除空格之外的任何字符。 您只需要排除這些字符。
[^\\s£%&+¬¦éúíóáÉÚÍÓÁ]
是一個否定的角色類 。 它匹配任何字符,除了空格或您不想要的字符。 只需替換模式中每個出現的\\S
:
[^\s£%&+¬¦éúíóáÉÚÍÓÁ]*(?=[^\s£%&+¬¦éúíóáÉÚÍÓÁ]{7,30})(?=[^\s£%&+¬¦éúíóáÉÚÍÓÁ]*[a-z])(?=[^\s£%&+¬¦éúíóáÉÚÍÓÁ]*[A-Z])(?=[^\s£%&+¬¦éúíóáÉÚÍÓÁ]*[\d])[^\s£%&+¬¦éúíóáÉÚÍÓÁ]*
現在,我不確定你想用這種模式實現什么。 也許你可以詳細說明你想要匹配的內容,以便稍微改進一下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.