使用短划线分隔符进行RegEX 14位数验证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用短划线分隔符进行RegEX 14位数验证相关的知识,希望对你有一定的参考价值。

我正在使用以下正则表达式^[d]{4}[-]?[d]{6}[-]?[d]{4}$来验证14个数字整体或分为

4 digits - 6 digits - 4 digits

以下四个示例匹配我的正则表达式,但我想排除最后两个示例。

  • 1111-111111-1111 - (根据我的业务逻辑有效)
  • 12341234561234 - (根据我的业务逻辑有效)
  • 1111-111111111 - (我希望这是无效的)
  • 1111111111-1111 - (我希望这是无效的)
答案

您可以对您不想匹配的模式进行负向预测,并使用此正则表达式,

^(?!d{4}-d{10})(?!d{10}-d{4})d{4}-?d{6}-?d{4}$

说明:

  • ^ - >字符串的开头
  • (?!d{4}-d{10}) - >否定前瞻以避免匹配此模式
  • (?!d{10}-d{4}) - >否定前瞻以避免匹配此模式
  • d{4}-?d{6}-?d{4} - >匹配你想要的模式
  • $ - >字符串结尾

Demo

我能想到的另一种模式,更简单,更优雅,你可以使用这个,

^d{4}(-?)d{6}1d{4}$

说明:

  • ^ - >字符串的开头
  • d{4} - >正好匹配四位数
  • (-?) - >匹配一个可选的连字符并在第1组中捕获
  • d{6} - >正好匹配六位数
  • 1 - >这确保了正则表达式中提到的两个连字符都存在或不存在
  • d{4} - >正好匹配四位数
  • $ - >字符串结尾

Demo

另一答案

只需使用或使用模式或14个数字。

var re = /^(d{4}-d{6}-d{4}|d{14})$/

function test(str) {
  console.log(str, re.test(str))
}

['1234-123456-1234', '12341234561234',
'1234-1234561234', '1234123456-1234'].forEach(test)
另一答案

^([ d] {4} [ - ] [ d] {6} [ - ] [ d] {4}?)|([ d] {16})$

希望这可以帮助!它有两个带有连字符的正则表达式,另一个带有整数(16位)

以上是关于使用短划线分隔符进行RegEX 14位数验证的主要内容,如果未能解决你的问题,请参考以下文章

求js代码。验证输入的数据是:4-16位字符,英文、数字、下划线的组合。

IIS重写规则以获取短划线分隔文件名的最后一部分

System.FormatException: GUID 应包含带 4 个短划线的 32 位数(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。

PHP Codeigniter数字短划线验证

15Java常用类(数组工具类Arrays)基本类型包装类(Integer类)正则表达式String的split(String regex)和replaceAll(String regex, (代码片

问题14:如何拆分含有多种分隔符的字符串