簡體   English   中英

測試字符串是否只有一個字符,中間有或沒有空格 REGEX

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM