【问题标题】:New to Regular Expressions need help正则表达式新手需要帮助
【发布时间】:2009-05-01 23:31:00
【问题描述】:

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

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

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

或数字和字母的组合 [一些空格 btw] + 数字 01xg [一些空格 btw] 0960000

该数组目前有四个对象。

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

感谢您的帮助。

迈克尔

【问题讨论】:

  • 你能改写一下这个问题吗,这没有意义......
  • 我从未见过如此完美地诠释 JWZ 著名的名言:“有些人在遇到问题时会想‘我知道,我会使用正则表达式。’”现在他们有两个问题。”
  • 我在这一点上的最佳猜测 这些项目有一个特定的字母和数字代码模式,应该是完全匹配的。还有一个字母(和或)数字混合,我不知道长度是多少,只是数字。空格注释是为了提供一些空白,以便人们可以读取数据而不是一个长字符串。示例 abcd 1234567890 (此模式是坚定的,也是目标的一部分。)或 1a2b 1234567890 或最后 1234 1234567890 我需要正则表达式做的是,在数组中查找完全匹配,然后调用函数来打开一个新页面。谢谢,迈克尔
  • \b(?:word1|word2|word3|word4)\b 和^[0-9]{10}$

标签: javascript regex


【解决方案1】:

要回答 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)?和 (?:foo|) 在这种情况下做同样的事情,但我不确定是否存在性能差异;我建议您使用对您最有意义的那个,以便您稍后阅读。

【讨论】:

    猜你喜欢
    • 2012-11-30
    • 2023-03-19
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    相关资源
    最近更新 更多