簡體   English   中英

排除正則表達式中的某些字符

[英]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.

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