正则表达式匹配变量

时间:2015-04-27 16:34:57

标签: javascript arrays regex node.js

我正在尝试测试以下正则表达式,但我无法让它工作。我正在使用regex101,但任何人都可以建议如何纠正这个或格式化正则表达式?

我有一个数组 - 用5个元素称它为arr []。

  • arr [0]需要是可变数量的字母,即单字名称。
  • arr [1]需要是一个单词或两个单词的名称(即可变数量的字母或可变数量的字母后跟一个空白字符后跟另一个可变数量的字母)
  • arr [2]需要连续10位数(例如123432908623,也可以从0开始)
  • arr [3]需要是具有以下格式的社会安全号码 - 3位数字后跟空格后跟2位数字后跟4位数字(例如123 45 6848)
  • arr [4]需要是具有以下格式的区号的电话号码 - 左括号后跟3位数后跟闭括号后跟空格后跟左括号后跟3位数后跟闭括号后跟空格后跟空格通过左括号后跟4位数后跟近括号(例如(123)456 1234)

以下是我开始使用的代码:

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);
}

3 个答案:

答案 0 :(得分:2)

到目前为止,您的代码中似乎存在大量拼写错误。此外,这看起来像一个问题集问题,所以我将把它作为进一步的练习,以了解更正是什么。你在正确的轨道上:

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]));
}

答案 1 :(得分:1)

这应该这样做:

true
true
true
true
true

输出:

{{1}}

样本

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

答案 2 :(得分:1)

我相信在全局格式中使用正则表达式更有趣,可以轻松维护...

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

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}$/