Regex 简单正则表达式验证

Regex 简单正则表达式验证,regex,Regex,我想实现以下验证。在字母和斜杠之间至少匹配5位数字和一些其他字符。例如,12345、1A/2345、B22226、21113C都是有效的组合。但是1234,AA1234不是。我知道{5,}给出了最少的出现次数,但我不知道如何处理其他字符。我的意思是[0-9A-Z/]{5,}不起作用:。我只是不知道在正则表达式中把其他字符放在哪里 提前谢谢 致以最良好的祝愿, Petar编辑:我从对paxdiablo答案的评论中得到了你的建议:这个正则表达式现在对其他字符的数量实现了5个上限: ^(?=(?:[A

我想实现以下验证。在字母和斜杠之间至少匹配5位数字和一些其他字符。例如,12345、1A/2345、B22226、21113C都是有效的组合。但是1234,AA1234不是。我知道{5,}给出了最少的出现次数,但我不知道如何处理其他字符。我的意思是[0-9A-Z/]{5,}不起作用:。我只是不知道在正则表达式中把其他字符放在哪里

提前谢谢

致以最良好的祝愿, Petar

编辑:我从对paxdiablo答案的评论中得到了你的建议:这个正则表达式现在对其他字符的数量实现了5个上限:

^(?=(?:[A-Z/]*\d){5})(?!(?:\d*[A-Z/]){6})[\dA-Z/]*$
将匹配并返回一个字符串,该字符串至少包含五个数字,并且包含零个或多个其他允许的字符a-Z或/。不允许使用其他字符

说明:

编辑:我从对paxdiablo的回答的评论中得到了你的建议:这个正则表达式现在对其他字符的数量实现了5个上限:

^(?=(?:[A-Z/]*\d){5})(?!(?:\d*[A-Z/]){6})[\dA-Z/]*$
将匹配并返回一个字符串,该字符串至少包含五个数字,并且包含零个或多个其他允许的字符a-Z或/。不允许使用其他字符

说明:


使用最简单的正则表达式功能,因为您尚未指定要使用的引擎,您可以尝试:

.*([0-9].*){5} |/|\ /|/| | | | \ / | | +--> exactly five occurrences of the group | | | | +----> end group | | | +------> zero or more of any character | | +---------> any digit | +------------> begin group +--------------> zero or more of any character
使用最简单的正则表达式功能,因为您尚未指定要使用的引擎,您可以尝试:

.*([0-9].*){5} |/|\ /|/| | | | \ / | | +--> exactly five occurrences of the group | | | | +----> end group | | | +------> zero or more of any character | | +---------> any digit | +------------> begin group +--------------> zero or more of any character
你可能想试着数数数字。我觉得这比写一个复杂的正则表达式要干净得多

>> "ABC12345".gsub(/[^0-9]/,"").size >= 5
=> true

上面说的是用所有的东西代替数字,然后找出剩下的长度。你可以用自己选择的语言做同样的事情。最基本的方法是迭代您拥有的字符串,计算每个数字字符的数量,直到它达到5或不达到5,然后相应地进行操作。

您可能需要尝试计算数字。我觉得这比写一个复杂的正则表达式要干净得多

>> "ABC12345".gsub(/[^0-9]/,"").size >= 5
=> true


上面说的是用所有的东西代替数字,然后找出剩下的长度。你可以用自己选择的语言做同样的事情。最基本的方法是迭代已有的字符串,对每个数字字符进行计数,直到它达到或不达到5为止,并相应地进行处理。

为什么AA1234无效?@deceze-它没有5个数字:所以规则是5个数字+任意数量的字母和斜杠?@deceze-是,字母和斜杠的数量可以>=0。根据文本,规则至少为5位。为什么AA1234无效?@deceze-它没有5位数字:因此规则为5位+任意数量的字母和斜杠?@deceze-是,字母和斜杠的数量可以>=0。根据文本,规则至少为5位。其他字符的数量可以为0。啊,好的。这使得正则表达式更加简单。即使它不是一个完美的解决方案,但为了清楚地解释,@Petar:更新了正则表达式以实现其他字符的上限。其他字符的数量可以是0。啊,好的。这使得正则表达式更加简单。即使它不是一个完美的解决方案,也需要+1来进行清楚的解释。@Petar:更新正则表达式以实现其他字符的上限。如果我要指定其他字符,该怎么办?@Petar,那么您将使用不同于的模式。-查看更新。谢谢!我还很好奇,如果添加了以下要求,正则表达式会是什么样子?请输入其他字符数的上限。@Petar,不要对所有字符都使用正则表达式。一旦它们在不到一秒钟的时间内变得过于复杂和不可读,您应该考虑更多的程序性解决方案。例如,^.{15}$将给您一个15个字符的字符串,但如果lenstr==15,则也会给您一个15个字符的字符串。这是一个基本的例子,但你正在进入一个区域,你最好只计算数字和非数字字符,然后检查这两个值。如果我想指定其他字符是什么呢?@Petar,那么你将使用不同于的模式。-查看更新。谢谢!我还很好奇,如果添加了以下要求,正则表达式会是什么样子?请输入其他字符数的上限。@Petar,不要对所有字符都使用正则表达式。一旦它们在不到一秒钟的时间内变得过于复杂和不可读,您应该考虑更多的程序性解决方案。例如,^.{15}$将给您一个15个字符的字符串,但如果lenstr==15,则也会给您一个15个字符的字符串。这是一个基本的例子,但你正在进入一个领域,你最好只计算数字和非数字字符,然后检查这两个值。关键是,这是复杂应用程序的一部分,所有验证都是正则表达式。所以我必须使用正则表达式。@Johnsyweb,注意我说的是复杂正则表达式。我知道我在用正则表达式。但我的方法更容易理解,阅读也更清晰。对不起,我应该在我的评论前面加上@Peter,因为这是对他的评论的回应。@Johnsyweb-我应该有
我把我的评论说得更清楚了。我想说的是正则表达式是以一种真实的、错误的方式使用的。我的意思是要么匹配要么不匹配。我不能使用这种自定义逻辑,关键是这是一个复杂应用程序的一部分,所有验证都是正则表达式。所以我必须使用正则表达式。@Johnsyweb,注意我说的是复杂正则表达式。我知道我在用正则表达式。但我的方法更容易理解,阅读也更清晰。对不起,我应该在我的评论前面加上@Peter,因为这是对他的评论的回应。@Johnsyweb-我应该更清楚地表达我的评论。我想说的是正则表达式是以一种真实的、错误的方式使用的。我的意思是要么匹配要么不匹配。我不能使用这种自定义逻辑。