我尝试编写一个正则表达式来验证模式,但是我遇到了一些问题。 这是我应该使用正则表达式进行验证的模式
XXXX
XXXX-XXXX
XXXX-XXXX-XXXX-XXXX-XXXX
每个X都是一个Int号[0-9]
我正在尝试这个:
[0-9]{4}(-?[0-9]{4})?
但它给了我这种模式:
**4586-4584**-**5588-5558**-**5888-5545**
知道如何解决这个问题吗?提前谢谢!
答案 0 :(得分:1)
[0-9]{4}(-[0-9]{4})*
试试这个,你需要-
,不能在它前面添加?
。添加*
代替?
,因为可能有多个
(?<![0-9\-])[0-9]{4}(-[0-9]{4})*(?![0-9\-])
这个不匹配1234-5667-78961234
答案 1 :(得分:1)
^(\d{4})(-(\d{4})){0,5}$
如果我理解正确,您正在寻找XXXX
的图案(所以每X
是一个数字),显示1到6次,中间用连字符。
因此,前4位数字是强制性,然后可能会有1到5次出现-XXXX
。
请注意^
和$
,以确保正则表达式不匹配字符串的一部分。
答案 2 :(得分:1)
您的模式[0-9]{4}(-?[0-9]{4})?
使用可选的连字符-?
和可选组(-?[0-9]{4})
。
可选连字符-?
将允许连续8位数字(4位数后跟4位数字)。
可选组仅允许0或1次出现,因此XXXX-XXXX-XXXX将不匹配。
不在行的开头和结尾使用锚点,将匹配3333-3333
中的333-3333-3333
。
您可以将正则表达式更新为^[0-9]{4}(-[0-9]{4})*$
或\d
:
^\d{4}(?:-\d{4})*$
<强>解释强>
^
\d{4}
(?:-\d{4})
*
$
答案 3 :(得分:0)
尝试使用此模式:
(\b([0-9]){4}\b)|(\b([0-9]){4}\-([0-9]){4}\b)|(\b([0-9]){4}\-([0-9]){4}\-([0-9]){4}\b)|(\b([0-9]){4}\-([0-9]){4}\-([0-9]){4}\-([0-9]){4}\b)
答案 4 :(得分:-2)
这应该这样做。只是尝试使用C#。
[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}