如何解决用于全名和电话的 JS 正则表达式
你能帮我用正则表达式吗:
-
全名 - 可以是英语或希伯来语 [\u0590-\u05FF]-这是希伯来语字母范围。
必须是2个或更多词, 每个单词至少包含一个字母 (不区分大小写)
示例:Roei Grin,R G,roei grin,r G,roei gr in,
“רועי גרין”、“רו ג”、רועי גרי ן”
- 电话号码- 必须是 10 位数字。 必须从 0 开始 可以(不是必须)在第三或第四位有“-”字符。 示例:0549129393、058-9210348、0266-391059
解决方法
这是两者的解决方案。名称和数字有很好的例子,其次是坏的例子:
const testNames = [
'Roei Grin','R G','roei grin','r G','roei gr iN','רועי גרי ן','רו ג','רועי גרין','Bad'
];
const testNumbers = [
'0549129393','058-9210348','0266-391059','1111','011111111','0999999-999','09999999999'
];
const nameRegex = /^[a-zA-Z\u0590-\u05FF]+( [a-zA-Z\u0590-\u05FF]+)+$/;
const numberRegex = /^0(\d{9}|\d{2}-\d{7}|\d{3}-\d{6})$/;
console.log('testNames:')
testNames.forEach(str => {
console.log('- "' + str + '" ==> ' + nameRegex.test(str));
});
console.log('testNumbers:')
testNumbers.forEach(str => {
console.log('- "' + str + '" ==> ' + numberRegex.test(str));
});
输出:
testNames:
- "Roei Grin" ==> true
- "R G" ==> true
- "roei grin" ==> true
- "r G" ==> true
- "roei gr iN" ==> true
- "רועי גרי ן" ==> true
- "רו ג" ==> true
- "רועי גרין" ==> true
- "Bad" ==> false
testNumbers:
- "0549129393" ==> true
- "058-9210348" ==> true
- "0266-391059" ==> true
- "1111" ==> false
- "011111111" ==> false
- "0999999-999" ==> false
- "09999999999" ==> false
nameRegex
的解释:
-
^
...$
- 字符串开头和结尾的锚点 -
[a-zA-Z\u0590-\u05FF]+
- 以 1 个以上的字母和/或希伯来语字符开头 -
( [a-zA-Z\u0590-\u05FF]+)+
- 后跟 1+ 个模式:单个空格,后跟 1+ 个字母和/或希伯来语字符
numberRegex
的解释:
-
^
...$
- 字符串开头和结尾的锚点 -
0
- 以0
开头 -
(\d{9}|\d{2}-\d{7}|\d{3}-\d{6})
- 后跟:- 9 位数字
- 或 2 位数字,
-
,7 位数字 - 或 3 位数字,
-
,6 位数字
你可以使用,这个 reg exp 用于你的面具手机 - ^[0]{1}(([\d]{2}[-]{0}[\d]{7})|([\d]{3}[-]{1}[\d]{6})|([\d]{2}[-]{1}[\d]{7}))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。