【问题标题】:RegEx and all phone numbers正则表达式和所有电话号码
【发布时间】:2015-04-07 02:09:45
【问题描述】:

我见过很多电话号码的 RegEx 表达式,似乎效果最好的一个是只允许访问者可能使用的字符,最多 15 个字符

数字 ( ) 。 + 和空格,无特定顺序,长度为 15 个字符。

我知道这不会检查它是否是一个有效的数字,但会停止数据插入等。

这行得通吗?请好心人帮我写出来。

谢谢你, 安迪

【问题讨论】:

  • 我认为您应该先尝试一些事情,然后再请好心人为您做这件事。
  • 您可以在这里查看参考:w3schools.com/jsref/jsref_obj_regexp.asp 您可以在这里查看您写的内容是否有效:regex101.com
  • 有些类型的编码我几乎比其他任何人都做得更好。以CF为例。还有一些我无法正确解决的问题,RegEx 就是其中之一。我会尽我所能帮助解决 CF 问题,我认为当我问一个简单的问题时,蔑视和诋毁我的声誉是非常不公平的。
  • @Andy:StackOverflow 不是这样工作的。在继续讨论之前,可以访问help center 并检查网站的规则。另请参阅regex tag wiki,了解有关此特定主题的一些建议。

标签: regex validation input


【解决方案1】:

这应该可以满足您的需要:

/^[().+\d -]{1,15}$/

正如你所说,它不会检查数字的格式,甚至不会告诉你它是否有效,它只是作为将特定字符列入白名单的一种方式。

下面是它的工作细目:

/ - 正则表达式分隔符;某些语言希望将正则表达式包含在这些而不是双引号中,这取决于您使用的内容。

^ - 行首。

[().+\d -] - 字符集;这个匹配文字字符().+-和所有数字(\d

{1,15} - 迭代;这告诉正则表达式引擎匹配它之前的任何内容(在本例中,字符集中的任何字符)1 到 15 次。

$ - 行尾。这与^ 相结合意味着只有当字段中的全部内容与正则表达式匹配时,正则表达式才会匹配。特别是,这意味着它强制限制 15 个字符,并且无论输入什么,如果存在超过 15 个字符,匹配将失败。

【讨论】:

  • 您可能想要检查字符串是否包含数字而不仅仅是标点符号。我会选择一个至少有五个数字的字符串,并允许它们之间穿插标点符号,但每个数字可能不超过一两个。
  • 根据 OP 的要求,这只是将特定字符以任意组合或顺序列入白名单。我个人会尝试进一步限制用户或在他们输入他们的值后进行处理,去除所有非数字,然后从那里评估电话号码。在这一点之后,这很可能仍然会发生,如果没有我们不知道它是如何使用的上下文,我真正能做的就是帮助解决已经提出的具体问题。
  • 谢谢bdx。必须消除 / 才能使其工作,但似乎可以解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-23
  • 2014-02-15
  • 2012-04-28
相关资源
最近更新 更多