首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex匹配变量

Regex匹配变量
EN

Stack Overflow用户
提问于 2015-04-27 16:34:56
回答 3查看 63关注 0票数 4

我正在尝试测试下面的regex,但是无法让它工作。我正在使用regex101,但有人能建议如何纠正这个问题或格式化正则表达式吗?

我有一个数组--称为arr[],包含5个元素。

  • arr需要是一个可变的字母数,即一个单词的名称.
  • arr1需要是一个单词或两个单词的名称(即一个可变的字母数或一个可变的字母数,后面跟着一个空格字符,然后是另一个可变的字母数)。
  • arr2需要一行10位数字(例如123432908623,也可以从0开始)
  • arr3需要是一个社会保险号码,格式如下:3位,空格,2位,4位(例如123 45 6848)
  • arr4需要是一个具有以下格式的地区代码的电话号码--打开括号后加上3位数字,然后是闭括号,然后是空格,然后是闭括号,然后是空格,然后是开括号,后面是4位数字,然后是结束括号(例如(123) 456 1234)

下面是我开始时的一些代码:

代码语言:javascript
复制
for(var i = 0; i<arr.length; i++){

    var str1 = arr[i][0];
    var pat1 = /^\s'w+?'/;
    var first = pat1.test(str1);
    console.log(first);

    var str2 = arr[i][1];
    var pat2 = /\s'\w+(?:\s\w+)?'/;
    var second = pat2.test(str2);
    console.log(second);

    var str3 = arr[i][2];
    var pat3 = /?:\d{10}$/;
    var third = pat3.test(str3);
    console.log(third);

    var str4 = arr[i][3];
    var pat4 = /?:\d{3}\s){2}\d{4}'\s\]$/;
    var fourth = pat4.test(str4);
    console.log(fourth);

    var str5 = arr[i][4];
    var pat5 = /\s'(?:\d{3}\s){3}\d{4})'\s\/;
    var fifth = pat5.test(str5);
    console.log(fifth);
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-27 16:46:37

到目前为止,您的代码中似乎有大量的输入。此外,这看起来像一个问题集,所以我将把它留给你们作为一个进一步的练习,以了解什么是更正。不过,你走在正确的轨道上:

代码语言:javascript
复制
var pat1 = /^[a-z]+$/i;
var pat2 = /^[a-z]+(?: [a-z]+)?$/i;
var pat3 = /^\d{10}$/;
var pat4 = /^\d{3} \d{2} \d{4}$/;
var pat5 = /^\(\d{3}\) \d{3} \d{4}$/;

for (var i = 0; i < arr.length; i++) {
  console.log(pat1.test(arr[i][0]));
  console.log(pat2.test(arr[i][1]));
  console.log(pat3.test(arr[i][2]));
  console.log(pat4.test(arr[i][3]));
  console.log(pat5.test(arr[i][4]));
}
票数 2
EN

Stack Overflow用户

发布于 2015-04-27 16:51:28

这应该可以做到:

代码语言:javascript
复制
var arr =  ["Louis", "Louis Python", "1234567890", "123 45 6848", "(123) 456 1234"];


    var str1 = arr[0];
    var pat1 = /^[a-z]+$/i;
    var first = pat1.test(str1);
    console.log(first);

    var str2 = arr[1];
    var pat2 =/^[a-z]+(?:\s[a-z]+)?$/i;
    var second = pat2.test(str2);
    console.log(second);

    var str3 = arr[2];
    var pat3 = /^[\d]{10}$/;
    var third = pat3.test(str3);
    console.log(third);

    var str4 = arr[3];
    var pat4 = /^[\d]{3}\s[\d]{2}\s[\d]{4}$/;
    var fourth = pat4.test(str4);
    console.log(fourth);

    var str5 = arr[4];
    var pat5 = /^\([\d]{3}\)\s[\d]{3}\s[\d]{4}$/;
    var fifth = pat5.test(str5);
    console.log(fifth);

输出:

代码语言:javascript
复制
true
true
true
true
true

演示

http://codepen.io/anon/pen/gpboLr

票数 1
EN

Stack Overflow用户

发布于 2015-04-27 16:52:44

我认为在全局格式中使用regex更有趣,做了一件容易维护的事情.

http://jsfiddle.net/579j2po1/1

代码语言:javascript
复制
var pat1 = /^[a-z]+$/i;
var pat2 = /^[a-z]+( +[a-z]+)?$/i
var pat3 = /^[0-9]{10}$/;
var pat4 = /^[0-9]{3} [0-9]{2} [0-9]{4}$/
var pat5 = /^\([0-9]{3}\) [0-9]{3} [0-9]{4}$/
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29901333

复制
相关文章

相似问题

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