【问题标题】:Regex pattern for ex "w l" should match sentences starting with 2 words one with "w" and another with "l"ex "w l" 的正则表达式模式应该匹配以 2 个单词开头的句子,一个单词是 "w",另一个单词是 "l"
【发布时间】:2015-08-17 20:14:12
【问题描述】:

例如: 假设“Welcome Lion”是字符串,那么如果用户键入“W L”,那么该字符串应该匹配。 请为此场景提供正则表达式模式。谢谢。

【问题讨论】:

  • 为什么要“W L”匹配,代码一般应该如何运行,这与“在正则表达式中使用\b两次查找匹配字符串”到底有什么关系?
  • 抱歉不一定是\b.......它可以是任何东西。对于 ex new RegExp("\\bw" + , "gi");匹配第一个单词 Welcome,但我也想匹配 Lion,因此我尝试了 new RegExp("\\bw\bl" + , "gi"); bu 不匹配这个字符串

标签: regex


【解决方案1】:

我猜你可以试试这样的:

entered_string = "W L";
matching_string = "Welcome Lion";
if matching_string.replace(/[^[:upper:]]/g, "").equals(entered_string) {
  return true;
}
return false;

请注意,这是伪代码,可能无法以任何语言编译。

matching_string.replace(/[^[:upper:]]/g, "")

这部分删除了每个非大写字母。

但是正如 jwodder 所说,我不明白你对 2 \b 的疑惑。

【讨论】:

  • 抱歉不一定是\b.......它可以是任何东西。对于 ex new RegExp("\\bw" + , "gi");匹配第一个单词 Welcome,但我也想匹配 Lion,因此我尝试了 new RegExp("\\bw\bl" + , "gi"); bu 不匹配这个字符串
  • (\w).*?\b :这确实匹配两个单词并返回第一个字母。
  • 但是 w 和 l 在你的模式中在哪里?您的模式将匹配任何 2 个单词,但我只想匹配第一个单词的第一个字母是 W,第二个单词的第一个字母是 L。另一个例子:如果用户在搜索框中键入“us”,那么美国应该匹配而不是任何2个单词的句子
【解决方案2】:

下面的模式终于起作用了

var char1 = "w";
var char2 = "l";
var regex_str = "\\b" + char1 + "(\\w).*?" + "\\b" + char2;
new RegExp(regex_str, "gim");

现在根据用户输入更改 char1 和 char2,此代码适用于任何情况

@yami 如果您觉得这个答案有帮助,请更新

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多