当前位置: 首页 > 知识库问答 >
问题:

正则表达式问题。如何强制电话号码以数字或“+”或“(”)开头,而不允许空格或“)”?[副本]

林夕
2023-03-14

我正在尝试强制国际电话号码以“number”或“+”或“(”开头,而不允许使用“whitespace”或任何其他字符。到目前为止,当电话号码以“+”开头时,我可以限制电话号码不以“whitespace”(\s)开头,但当电话号码以“number”或“(”开头时,我不能限制

^(\+(\d+))?\s?\(?(\d+)\)?([\s-]?[0-9])*$

上面允许“123 456 789 0”“(123)456-7890”

请提供帮助,说明如何限制电话号码不以“空格”或除“+”“(”以外的任何字符开头

共有1个答案

傅志用
2023-03-14

将要匹配的字符放在一个组([\d\+\(])中字符串的开头,然后将该组放在表达式的开头:

null

var regex = /^[\d\+\(](\+(\d+))?\s?\(?(\d+)\)?([\s-]?[0-9])*$/;
console.log("123 456 7890".match(regex));
console.log("(123) 456 7890".match(regex));
console.log(" 123 456 7890".match(regex));
console.log(" (123) 456 7890".match(regex));
 类似资料:
  • 我已经使用了这个正则表达式:“^[0-9a-zA-Z]{6,}$” 它允许:数字,大写字母,小写字母。它不允许:空白和特殊字符或符号。 但我想将其修改为: -允许:数字,以及大写字母或小写字母 -不允许:空白和特殊字符或符号。 实际上,我想将其用作Transaction ID的正则表达式。 有效的例子: TY5TF45TF463CHB7437R(大写数字) 无效示例: > SSHD434GFHDG

  • 问题内容: 我正在建立正则表达式以检查单词是否以或或开头,我的代码如下, 它打印。我还检查了Regex之后的 stackoverflow,以测试字符串是否以http://或https://开头 正则表达式似乎是正确的,但为什么不匹配?我甚至尝试和 问题答案: 您需要在此处进行 完整的输入 匹配。 编辑 :(基于@davidchambers的评论)

  • 问题内容: 正则表达式可以匹配空格 或 字符串的开头吗? 我正在尝试用英镑符号替换缩写为GBP的货币。我可以匹配任何以GBP开头的东西,但我想更加保守一些,并在它周围寻找某些定界符。 我可以同时做后两个例子吗? 问题答案: 使用OR“ ”运算符:

  • 问题内容: 我需要一个不以点开头或不以开头的正则表达式。 此正则表达式有效,但在第一个条件下失败;它不以点开头: 例如:应为有效字符串,但失败。 问题答案: 从上一个问题开始,您应该可以使用: 但是,如果您希望能够匹配1个字符串,则需要否定先行: 而且,如果您也想匹配空字符串,只需使用代替即可。

  • 问题内容: 假设我想要一个正则表达式,使其与“从iPhone发送”和“从iPod发送”都匹配。我该如何写这样的表达? 我尝试过类似的事情: 但似乎不起作用。 问题答案:

  • 问题内容: 我试图设置一个正则表达式,它将检查字符串的开头,以及是否包含其中一个http://或https://应与之匹配的字符串。 我怎样才能做到这一点?我正在尝试以下不起作用的方法: 问题答案: 您对的使用[]不正确-请注意,它[]表示一个字符类,因此只能匹配一个字符。该表达式[]翻译为“匹配a (,或 s。(重复的字符将被忽略。) 试试这个: 如果您确实要使用交替,请改用以下语法: