我需要一个带有一个按钮和输入窗口的表单
将通过正则表达式检查数组。
并且会找到字母+数字的完全匹配。示例wxyz [some space btw] 0960000
或数字和字母的混合[某些空间顺便说一句] +数字01xg [某些空间顺便说一句] 0960000
数组目前有四个对象。
一旦找到我需要一个功能,将在找到匹配时打开一个新的页面或窗口。
感谢您的帮助。
迈克尔
答案 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 |)在这种情况下做同样的事情,但我不确定是否存在性能差异;我建议你使用对你来说最有意义的那个,这样你以后就可以阅读了。