修改给定的正则表达式以检查字符串是否不包含 phone 数字

Modify given regex to check if string contains no phone number

我有一个 jQuery 验证方法来检查是否输入了 phone 数字

现在我需要修改它来检查字符串是否不包含 phone 数字

$.validator.addMethod('contains_no_phone_number', function (value, element) {
    return this.optional(element) || /^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/im.test(value);
}, "Do not include phone number");

我不希望有人以下面的格式输入包含 phone 数字的字符串:

02221234567

0222-1234567

+862221234567

+86-222-123-4567

+86(222)1234567

我想要 jquery 验证器方法应该 return

PHONE_NUMBER (假)

PHONE_NUMBER一些字(假)

有些词PHONE_NUMBER(假)

一些词PHONE_NUMBER一些词(假)

一些单词(正确)

Phone号码长度介于7

以上

注意:如果需要,请随意制作您自己的正则表达式。

遵循逻辑 from our chat,这里是模式:

/^(?!.*(?:\s|^)(?:\+\d|0)(?:[()-]*\d){6,}(?!\S))/

参见regex demo

详情:

  • ^ - 字符串开头
  • (?! - 否定前瞻的开始:
    • .* - 除换行字符外的任何零个或多个字符,尽可能多
    • (?:\s|^) - 空格或字符串开头
    • (?:\+\d|0) - + 和一个数字,或一个零
    • (?:[()-]*\d){6,} - 零个或多个 ()- 字符出现六次或更多次,然后是数字
    • (?!\S) - 当前位置右侧不允许有非空白字符
  • ) - 超前检查结束。