想知道如何验证一个字符串,如前3连续数字不能连续8或9?例如:正则表达式来检查前3个连续数字
88839182 (not valid)
99923213 (not valid)
98188823 (valid)
98939117 (valid)
使用s.match("([98]){3}")
尝试,但它似乎没有工作,因为它需要在989的第3个字符了。
想知道如何验证一个字符串,如前3连续数字不能连续8或9?例如:正则表达式来检查前3个连续数字
88839182 (not valid)
99923213 (not valid)
98188823 (valid)
98939117 (valid)
使用s.match("([98]){3}")
尝试,但它似乎没有工作,因为它需要在989的第3个字符了。
我会假设你的问题说法正确的是:你想(一)发现(b)如果这是888或999,则拒绝该字符串。因此,分两步进行:
匹配三个连续数字的正则表达式仅仅是(\d)\1\1
。其余依赖于你的编程语言(你没有指定);它几乎肯定是一种返回数字字符串中第一个匹配内容的方法。
另外,定义问题是 “不与888或999开始” 的更简单的方法,
它找到无效数据:
s.match("^(999|888)")
要找到有效数据;数据;
!s.match("^(999|888)")
嗨!感谢您的回复。我只想要前3个连续的数字。后续的连续数字被认为是有效的 –
@ahgal欢迎!检查编辑! – Kasramvd
@卡斯拉,很好的解决方案。我会指出,如果要求只捕获数字(这不是特定的,但是基于示例如何解释需求),那将是一个不同的正则表达式。您的正则表达式将匹配123abc,foo,“hello world”等。要将其限制为仅数字:“(?=^\ d + $)(?!([98])\ 1 \ 1)\ d +”第一个断言确保整个字段都是数字。第二个主张是你的。最后,我使用了\ d而不是点,所以如果你想123中的“123 z”改变^和$到\ b和瞧! – Luv2code