我尽力而为,让它发挥作用。
我只需要:
1.输入不应该以LOVE开头。
2.并非所有有效字符都必须相同。
3.必须至少有6个有效字符(大写和数字),最多为18个
其他允许的字符是空格,&符号(&),连字符,句号,固定符(/)。
例子:
允许ERTYUII
不允许afgTYULO(仅包含5个有效字符)
不允许使用LOVE12345WERT(以LOVE开头)。
asdERTY12 ^&安培;允许(至少6个有效字符(ERTY12上部和数字))
asAAertArtytyAtytytuArtyttyAyuyuyyA即使我们有6个有效的字符也不允许,但它们都是相同的。
请指教。
注意:我编辑了这个问题,因为我忘了错过我的任务中的一些要点:(。
答案 0 :(得分:3)
注意:此正则表达式与原始问题中给出的描述相符。此后,编辑工作大幅改变了要求。
如果我理解正确的话,这个正则表达式应该有效:
/^(?!LOVE)[^a-z]+$/
这将匹配任何不以LOVE开头并且不包含小写字母的内容。
(注意:这假定为标准英文字母,仅限a-z)
<强>解释强>
^
和$
锚定到字符串的开头和结尾。这会强制模式匹配整个字符串。
(?!LOVE)
是一个先见之明。它会检查字符串是否以LOVE开头,但它根本不会向前移动匹配位置。因此,正则表达式的其余部分仍然会检查整个字符串。
[^a-z]
一个否定的字符类,匹配任何非小写字母的内容。
+
与之前的事物匹配一次或多次。所以它匹配一个或多个不是小写字母的字符。
<强>更新强>
所以你也想要禁止任何只重复同一个角色的东西?这是一个匹配只包含相同字符的字符串的正则表达式:
/^(.)\1+$/
(.)
匹配单个字符并将其放在第一个捕获组中。
\1+
匹配一次或多次捕获组。
在这种情况下,因为它匹配您不想要的输入,您必须检查正则表达式是否与不匹配。
可以使用另一个预测将它组合到同一个正则表达式中:
/^(?!LOVE)(?!^(.)\1+$)[^a-z]+$/
但是,当您为同一个正则表达式添加越来越多的条件时,它变得越来越难以理解。如果您必须进行多次检查,将它们分成不同的正则表达式通常更明智。