2013-03-01 54 views
-1

我在我的智慧结束,使其工作。
我需要的全部是:
1.输入不应以LOVE开头。
2.并非所有有效字符必须相同。
3.必须至少有6个有效字符(大写和数字),最大值为18.
4.其他允许的字符是空格,符号(&),连字符,句号,固定点(/)。小写的正则表达式,不以固定的字母开始

实例:
ERTYUII允许
afgTYULO不允许(仅包含5有效字符)
LOVE12345WERT不允许(与LOVE开始)。
asdERTY12^&被允许(至少6个有效字符(ERTY12大写和数字))
asAAertArtytyAtytytuArtyttyAyuyuyyA不允许,即使我们有6个有效字符但它们都是相同的。

请指教。

注:我编辑了这个问题,因为我忘了我的任务:(错过一些点

+0

'不允许任何小写字母'如何Unicode小写字母?或者输入是否只包含英文字母和数字? – nhahtdh 2013-03-01 11:24:44

+0

有时最好的解决方案是针对查询运行多个正则表达式来验证它。 它是一个头痛的写正则表达式,然后更大的头痛,以了解你在3个月内写了什么。 – rtpHarry 2013-03-01 11:25:55

+0

完美无瑕。我意识到我忘了一件事,并非所有允许的字符必须相同。所以,即使AAAAAAAAAAAAAA也不应该被允许,并且至少有6个有效的字符必须存在。 所以,aaABBccdER是无效的,因为我们只有5个有效字符,即大写字母(ABBER)等。 小写字母我的意思是任何字符,它也可以是这里允许的特殊字符:(对我来说太复杂了。 请帮忙 – user1353436 2013-03-01 11:53:26

回答

2

注:本正则表达式匹配在原来的问题给出的描述编辑从那以后改变了需求大增。 。

此正则表达式应该工作,如果我理解正确:

/^(?!LOVE)[^a-z]+$/ 

这将匹配任何不以爱开始,包含n个o小写字母。

(注:这是假定一个标准的英文字母,只有A-Z)

说明:

^$锚字符串的开头和结尾。这迫使模式匹配整个字符串

(?!LOVE)是一个预测。它检查该字符串是否以LOVE开头,但它不会向前移动匹配位置。因此,正则表达式的其余部分仍然检查整个字符串。

[^a-z]否定字符类,匹配任何不是小写字母的内容。

+匹配以前的事情一次或多次。所以它匹配一个或多个不是小写字母的字符。

更新:

所以,你还希望禁止任何仅仅是相同的字符重复?这里是一家只包含相同字符的字符串相匹配的正则表达式:

/^(.)\1+$/ 

(.)匹配单个字符,并把它的第一个捕获小组。

\1+匹配捕获组的一个或多个事件。

在这种情况下,因为它与您不想要的输入相匹配,您必须检查正则表达式不匹配。

有可能使用其他先行在同一正则表达式这个结合:

/^(?!LOVE)(?!^(.)\1+$)[^a-z]+$/ 

然而,当您添加越来越多的条件相同的正则表达式,它变得越来越难明白。如果您必须进行多项检查,将它们分成不同的正则表达式通常更为明智。

+0

完全正常工作我意识到我忘了一件事情,并非所有允许的字符必须相同,因此,即使AAAAAAAAAAAAAA不应该被允许,至少有6个有效的字符必须存在 – user1353436 2013-03-01 11:46:10

+0

不确定正则表达式是否有效,尚未测试它,但很好的解释:) – rtpHarry 2013-03-01 11:46:27

+0

@rtpHarry,如果怀疑可随时测试它:) http://regexpal.com/你必须删除开始和结束斜线 – 2013-03-01 12:01:17

相关问题