【问题标题】:Regex for multiple phrases in one phrase一个短语中多个短语的正则表达式
【发布时间】:2014-08-15 06:49:35
【问题描述】:

我真的没有其他方法可以解释这一点,但是我需要一个正则表达式来匹配 javascript。

我有一个垃圾邮件预防来匹配一个字符串,但是我想要多个猜测并使用正则表达式匹配那些。

例如,我想匹配 thiswordhere。要返回 true,匹配项可以是:

  • 这个词在这里
  • 这个词
  • 字在这里

它必须是一个独立的单词,所以没有空格,也没有像 word wordthisword word

这样的响应

四种可能的结果。我对 regex 很陌生,使用 regexr 所能得到的只是:

/(thisword)[here]/g

这不能解决问题。在接下来的几个月里,我将大量学习正则表达式,所以我想看看这个例子的解决方案。

【问题讨论】:

  • 只是想知道,你用 Javascript 做了什么样的“垃圾邮件预防”?您意识到它可以很容易地被禁用或克服(在浏览器中)或被忽略/绕过,对吧?
  • 我也会在服务器端做。
  • 客户端验证是使用 bootstrapValidator 进行的,它需要正则表达式来精确匹配字段。

标签: javascript regex


【解决方案1】:

匹配一行(或您的字符串)上的文本,您只需将开始 ^ 和结束 $ 分隔符添加到您的正则表达式:

/^((?:this)?word(?:here)?)$/g

Example


一种快速简便的方法是将这些特定结果指定为选项:

/(thiswordhere|thisword|wordhere|word)/g

Example

一个更好的选择可能是指定始终需要“单词”部分,左侧为“this”可选,右侧为“here”:

/((?:this)?word(?:here)?)/g

Example


仅供参考 - 您的正则表达式是按字面意思匹配“thisword”,后跟“h”、“e”、“r”、“e”四个字符中的任何一个。您需要说的是“匹配词,可选地以“this”开头,可选地后跟“here”(如上例)。

【讨论】:

  • "thiswordhere".match(/(this)?(word)(here)?/g)[0]
  • 必须是独立的,以防止 thisword word word thiswordhere 作为响应。所以之前或之后没有间距会这样做。
  • 你的意思是你只想匹配这些如果它们都是输入? Like this for example?
  • 是的,输入不能再包含 thiswordhere wordhere 或 word,仅此而已。
【解决方案2】:

您可以像这样使用正则表达式:

\b(?:this)?word(?:here)?\b

Working demo

【讨论】:

    猜你喜欢
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多