正则表达式的新功能需要帮助

时间:2009-05-01 23:31:01

标签: javascript regex

我需要一个带有一个按钮和输入窗口的表单

将通过正则表达式检查数组。

并且会找到字母+数字的完全匹配。示例wxyz [some space btw] 0960000

或数字和字母的混合[某些空间顺便说一句] +数字01xg [某些空间顺便说一句] 0960000

数组目前有四个对象。

一旦找到我需要一个功能,将在找到匹配时打开一个新的页面或窗口。

感谢您的帮助。

迈克尔

1 个答案:

答案 0 :(得分:2)

要回答Javascript部分,这里有一种通过数组“grep”查找匹配元素的方法:

var matches = [];
var re = /whatever/;

foo.forEach(
  function(el) {
    if( re.exec(el) )
      matches.push(el);
  }
);

试图回答正则表达式部分:我不知道“完全匹配”对你意味着什么,我假设“某些空间”仅属于其他术语之间,我假设字母意味着大写字母从'a'到'z'的大写字母和数字应为0-9(否则,其他语言字符可能匹配)。

第一个模式是/ [a-zA-Z0-9] + \ s * 0960000 /。如果至少有一个空格而不是零个或多个空格字符,请将“\ s *”更改为“\ s +”。如果不匹配制表符(以及一些较少使用的空格字符),请将“\ s”更改为“”。

对于第二种模式,我不知道“数字01xg”是什么意思,但是如果它意味着数字后面跟着那个字符串,那么模式将是/ [a-zA-Z0-9] + \ s * [ 0-9] + \ S * 01xg \ S * 0960000 /。同样的警告同样如上所述。

此外,这将匹配部分字符串。如果字符串完全匹配(如果字符串中没有任何内容必须存在,除了匹配的字符串),将“^”添加到模式的开头以将其锚定到字符串的开头,并在结尾处添加“$”将它锚定到字符串的末尾。例如,/ [a-zA-Z0-9] + \ s * 0960000 /匹配“foo_bar 5 0960000”,但/ ^ [a-zA-Z0-9] + \ s * 0960000 $ /不匹配。

有关Javascript中正则表达式的更多信息,请查看developer.mozilla.org's article on the RegExp object(该链接将您带到JS 1.5版参考,这应该适用于所有支持JS的浏览器)。

(已编辑添加):要匹配任何一种情况,因为它们有重叠的部分,您可以使用以下模式:/ [a-zA-Z0-9] +(?:\ s * [0-9] + \ S * 01xg)?\ S * 0960000 /。问号表示匹配不同的部分 - 在非匹配组(?:foo)中 - 一次或零次。 (:富)?和(?:foo |)在这种情况下做同样的事情,但我不确定是否存在性能差异;我建议你使用对你来说最有意义的那个,这样你以后就可以阅读了。