javascript 中 phone 数字的强制输入正则表达式

Regex for coercing input for phone number in javascript

我有一个法语格式的 phone 号码输入 输入接受两种格式,所以我可以这样输入:

  1. 0699999999
  2. +33699999999

不检查号码的长度。

数据库中的table,字段是varchar 12,不过我可以有更短的输入。 约束条件:输入仅包含从 0 到 9 的数字,可选的“+”符号仅在字符串开始时才被接受,而不是之后。

目前我在 Angular 中有一个指令,在那个指令中,核心是这个表达式:

var transformedInput = inputValue.replace(/[^0-9]/g, ''); 

我想要可选的前导“+”号,我该如何实现? 谢谢。

改为

var transformedInput = inputValue.replace(/[^0-9\+]/g, '').replace(/(.)\+/g, ''); 

注意 - 除非输入中已经有 +,否则不会添加 +


它的作用是

  1. 不要删除第一个替换中的 + 符号
  2. 在第 2 个替换中删除所有前面有某个字符的 + 符号

您可以将加号设为可选:

if (/\+?\d*/.test(subject)) {
    // Successful match
} else {
    // Match attempt failed
}

主题是您要检查的文本。 \+ 使加号成为文字,而问号使其成为可选的。

如果您只想检查是否有加号,请删除问号。但是,如果那是您的目标,请不要使用正则表达式。那是太多的开销。只需获取修剪字符串的第一个字符并检查加号。