javascript 中 phone 数字的强制输入正则表达式
Regex for coercing input for phone number in javascript
我有一个法语格式的 phone 号码输入
输入接受两种格式,所以我可以这样输入:
- 0699999999
- +33699999999
不检查号码的长度。
数据库中的table,字段是varchar 12,不过我可以有更短的输入。
约束条件:输入仅包含从 0 到 9 的数字,可选的“+”符号仅在字符串开始时才被接受,而不是之后。
目前我在 Angular 中有一个指令,在那个指令中,核心是这个表达式:
var transformedInput = inputValue.replace(/[^0-9]/g, '');
我想要可选的前导“+”号,我该如何实现?
谢谢。
改为
var transformedInput = inputValue.replace(/[^0-9\+]/g, '').replace(/(.)\+/g, '');
注意 - 除非输入中已经有 +,否则不会添加 +
它的作用是
- 不要删除第一个替换中的 + 符号
- 在第 2 个替换中删除所有前面有某个字符的 + 符号
您可以将加号设为可选:
if (/\+?\d*/.test(subject)) {
// Successful match
} else {
// Match attempt failed
}
主题是您要检查的文本。 \+ 使加号成为文字,而问号使其成为可选的。
如果您只想检查是否有加号,请删除问号。但是,如果那是您的目标,请不要使用正则表达式。那是太多的开销。只需获取修剪字符串的第一个字符并检查加号。
我有一个法语格式的 phone 号码输入 输入接受两种格式,所以我可以这样输入:
- 0699999999
- +33699999999
不检查号码的长度。
数据库中的table,字段是varchar 12,不过我可以有更短的输入。 约束条件:输入仅包含从 0 到 9 的数字,可选的“+”符号仅在字符串开始时才被接受,而不是之后。
目前我在 Angular 中有一个指令,在那个指令中,核心是这个表达式:
var transformedInput = inputValue.replace(/[^0-9]/g, '');
我想要可选的前导“+”号,我该如何实现? 谢谢。
改为
var transformedInput = inputValue.replace(/[^0-9\+]/g, '').replace(/(.)\+/g, '');
注意 - 除非输入中已经有 +,否则不会添加 +
它的作用是
- 不要删除第一个替换中的 + 符号
- 在第 2 个替换中删除所有前面有某个字符的 + 符号
您可以将加号设为可选:
if (/\+?\d*/.test(subject)) {
// Successful match
} else {
// Match attempt failed
}
主题是您要检查的文本。 \+ 使加号成为文字,而问号使其成为可选的。
如果您只想检查是否有加号,请删除问号。但是,如果那是您的目标,请不要使用正则表达式。那是太多的开销。只需获取修剪字符串的第一个字符并检查加号。