【问题标题】:Regex - if contain word, then last char must be whitespace正则表达式 - 如果包含单词,则最后一个字符必须是空格
【发布时间】:2016-08-02 08:47:51
【问题描述】:

我有一个字符串 'na nie',我想创建一个正则表达式来搜索它 - 它也应该找到 'na xxx nie',但不是 'nanie' 或 'na xxxnie'。

我现在的代码是:

/^(na)[\W]+[\W]?(nie)$/i

但它不适用于'na xxxnie' - 我的问题是如何在正则表达式中确定:'如果里面有一个单词,那么最后一个字符应该是空格'

编辑:'xxx na nie' 呢?

【问题讨论】:

  • 我猜这应该支持像ż这样的Unicode字符,对吧?试试/^(na)\s+(?:(\S+)\s+)?(nie)$/i
  • /^(na)\W+(?:.+\W])?(nie)$/i 工作吗?
  • \s 将匹配一个空格。
  • 你的问题很不清楚。请具体说明您希望您的正则表达式返回哪些字符串true(如“匹配”)以及应该为哪些字符串返回false(不匹配)。我们不知道您所说的“编辑:'xxx na nie' 是什么意思”,因为您没有指定这是否匹配。

标签: javascript php regex


【解决方案1】:

这似乎可以解决问题:

/^(na)\s+([^\s]*\s+)?(nie)$/i

修改问题编辑:

/^[^\s]*\s?(na)\s+[^\s]*\s?(nie)$/i

Example

【讨论】:

  • 这也将匹配na xxx yyy zzz nie
  • 为什么我的版本不起作用? ''/\s?(na)\s+(.*\s)?(nie)/i''
  • 并且您的答案不正确-因为它与 f.e. 匹配。 'xxxna nie'(不应该)
  • 我又改了。立即尝试。
  • 'xxx na nie' 不工作 - 请告诉我为什么我的代码 '\s?'在“(na)”之前不起作用?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-30
  • 2015-11-22
相关资源
最近更新 更多