gpt4 book ai didi

php - 从正则表达式中排除某些字符

转载 作者:搜寻专家 更新时间:2023-10-31 21:05:54 28 4
gpt4 key购买 nike

我有以下正则表达式,我很难排除某些字符。我想从字符串中排除 £%&+¬¦éúíóáÉÚÍÓÁ

\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}$
^^^^^^^^^^^^^^^^^^^^^^^^

参见 demo

所有的lookaheads都在开头检查字符串,长度检查可以移到末尾。您需要 ^$ anchor 来启用长度检查。

如果你在较大的字符串中匹配,你can replace ^ and $ with word boundary \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)

参见 another demo

关于php - 从正则表达式中排除某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32476111/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com