[英]Testing if a string has only one charater with or without a space in the middle REGEX
我有這個正則表達式
`^([0-9]{2}|[0-9]{3}\s?[0-9]{3})\s?((?!(.)\3{7}))([0-9]{4}\s?[0-9]{4}$)`
這些是場景:
12 1234 1234 -> 必須匹配
12 1111 1111 -> 無法匹配
12 12341234 -> 必須匹配
12 11111111 -> 無法匹配
我找不到解決這個問題的方法
如果 2 組 4 位不應該存在相同的數字,您可以使用否定前瞻,使用將匹配對組 1 的反向引用或空白字符的替代。
^[0-9]{2}\s([0-9])(?!(?:\1|\s)+$)[0-9]{3}\s?[0-9]{4}$
解釋
^
字符串開頭[0-9]{2}\s
匹配 2 個數字和空白字符([0-9])
捕獲組1 ,匹配第一組4位的第一位(?!
負前瞻,斷言右邊的不是
(?:\1|\s)+$
使用對組的反向引用或空白字符匹配相同的數字)
關閉前瞻[0-9]{3}\s?[0-9]{4}
匹配 3 位數字、可選的空白字符和 4 位數字$
字符串結尾在您的模式開始時使用交替可能還匹配 2 次 3 位數字:
^(?:[0-9]{2}|[0-9]{3}\s?[0-9]{3})\s([0-9])(?!(?:\1|\s)+$)[0-9]{3}\s?[0-9]{4}$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.