-2

我需要正则表达式,它将检查我的字符串是一个数字并且是 4 位数字。也不是从 0 开始,也没有重复的数字。

例如:

  • 1234是正确的
  • 0123 不正确
  • 234 不正确
  • 2334 不正确
  • 7890是正确的
4

1 回答 1

0

这种问题使用正则表达式非常困难,而使用其他任何东西都非常容易

尽管如此,您可以使用一堆前瞻和捕获组来完成这项工作,类似于:

([1-9])(?!.*\1)([0-9])(?!.*\2)([0-9])(?!.*\3)([0-9])(?!.*\4)

如果您只关心这四个数字,而不关心行/输入的其余部分中发现的任何内容,除了这四个数字之外,您可以控制前瞻的长度,例如:

([1-9])(?!.{0,2}\1)([0-9])(?!.{0,1}\2)([0-9])(?!\3)([0-9])
于 2013-06-11T19:34:25.677 回答