首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Javascript的Regex

使用Javascript的Regex
EN

Stack Overflow用户
提问于 2017-12-19 16:06:58
回答 2查看 74关注 0票数 3

我正在尝试创建一个函数,可以从电话号码字段中删除某些字符。到目前为止,我已经删除了括号、空格和连字符,如在(321) 321-4321中。此外,我删除了点,如在321.321.4321。最后,我已经验证了当11位数字和1开头,甚至标点符号。

我输入的代码:

代码语言:javascript
复制
function phoneNumber(){
   var number = '(321) 321-4321';
   number = number.replace(/[^\d]/g, '');
   return number;
}

我现在正试图让它在某些情况下返回null,比如:

  • 当数字超过11位数时
  • 当字母和/或标点符号存在时
  • 当区号不以2-9开头时
  • 当exchange代码不以2-9开头时。

任何添加语句的尝试都会使我的原始函数无效。有人能帮我吗?我是新手,但我需要帮助?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-19 16:41:16

简介

如果我没听错,你想:

  • 从字符串中删除任何非数字字符
  • 获取长度为11位数(或更少)的数字
  • 以确保数字中的第一位和第四位在2-9范围内(所以不是0或1)

代码

第一个正则表达式可以使用\D而不是[^\d],因为它们的含义完全相同。

第二部分可以使用以下任何方法(以及更多方法,但这些方法可能是一些最简单的方法):

Regex和.length

代码语言:javascript
复制
/^[2-9]\d{2}[2-9]/.test(number) && number.length <= 11

代码语言:javascript
复制
var numbers = [
  '(321) 321-4321', 
  '321.321.4321', 
  '123.456.7890',
  '321.123.4567',
  '(321) 321-4321-321'
];

function phoneNumber(number){
   number = number.replace(/\D/g, '');
   if(/^[2-9]\d{2}[2-9]/.test(number) && number.length <= 11) {
     return number;
   }
   return null;
}

numbers.forEach(function(number){
  console.log(phoneNumber(number));
});

charAt、正则表达式和长度

代码语言:javascript
复制
!/[01]/.test(number.charAt(0)) && !/[01]/.test(number.charAt(3)) && number.length <= 11

代码语言:javascript
复制
var numbers = [
  '(321) 321-4321', 
  '321.321.4321', 
  '123.456.7890',
  '321.123.4567',
  '(321) 321-4321-321'
];

function phoneNumber(number){
   number = number.replace(/\D/g, '');
   if(!/[01]/.test(number.charAt(0)) && !/[01]/.test(number.charAt(3)) && number.length <= 11) {
     return number;
   }
   return null;
}

numbers.forEach(function(number){
  console.log(phoneNumber(number));
});

Regex (单独)

显然,您会将0更改为任何最小位数要求(减4);因此,如果您想要9的最小值,就将{5,7}放在这里。

代码语言:javascript
复制
/^[2-9]\d\d[2-9]\d{0,7}$/.test(number)

代码语言:javascript
复制
var numbers = [
  '(321) 321-4321', 
  '321.321.4321', 
  '123.456.7890',
  '321.123.4567',
  '(321) 321-4321-321'
];

function phoneNumber(number){
   number = number.replace(/\D/g, '');
   if(/^[2-9]\d\d[2-9]\d{0,7}$/.test(number)) {
     return number;
   }
   return null;
}

numbers.forEach(function(number){
  console.log(phoneNumber(number));
});

票数 2
EN

Stack Overflow用户

发布于 2017-12-19 16:13:56

尝试如下所示,使用.length获取字符串中的字符

代码语言:javascript
复制
var number = '(321) 321-4321';
number = number.replace(/[^\d]/g, '');
console.log(number)

if (number.length > 11) {
  console.log("null");
} else {
  console.log(number.length);
}


if (number.match(/[a-z]/i)) {
  console.log("alphabet letters found");
} else {
  console.log("alphabet letters not found");
}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47890862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档