正则expression式匹配variables

我试图testing下面的正则expression式,但我无法得到它的工作。 我使用regex101,但任何人都可以build议如何纠正或格式化正则expression式?

我有一个数组 – 用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); } 

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

 var pat1 = /^[az]+$/i; var pat2 = /^[az]+(?: [az]+)?$/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])); } 

我相信,在全球格式使用正则expression式更有趣,做了一个易于维护的小提琴…

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

 var pat1 = /^[az]+$/i; var pat2 = /^[az]+( +[az]+)?$/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}$/ 

这应该做到这一点:

 var arr = ["Louis", "Louis Python", "1234567890", "123 45 6848", "(123) 456 1234"]; var str1 = arr[0]; var pat1 = /^[az]+$/i; var first = pat1.test(str1); console.log(first); var str2 = arr[1]; var pat2 =/^[az]+(?:\s[az]+)?$/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); 

输出:

 true true true true true 

DEMO

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