如何在Javascript正则表达式中匹配单个单词?

时间:2018-08-13 18:11:42

标签: javascript regex

我只想在javascript中的一个模式后匹配一个单词(\ w +)。

这是我的简单测试代码:

State.Renderer = new MappedImageRenderer (new Object [] {"Active", Resources._57, "Busy", Resources._60, "Away", Resources._63});

但是,javascript告诉我该模式不匹配。这几乎与我习惯使用的正则表达式匹配完全相反。即使当我在regex101.com上进行测试时,我也找到了匹配项。

匹配单词的约定是什么?

2 个答案:

答案 0 :(得分:3)

首先,您需要在字符串文字中转义该斜杠,否则它将丢失:

const slashIsLost = "apple:\w+";
console.log(slashIsLost); // apple:w+

const slashIsEscaped = "apple:\\w+";
console.log(slashIsEscaped ); // apple:\w+

第二,您需要记住\w匹配字母,数字和_字符。因此,您最好改用[A-Za-z]字符类-或只咬第一对字符,并用i标志使RegExp不区分大小写。

作为旁注,现在还不清楚为什么不在这里只使用RegExp文字:

/apple:[a-z]+/i.test('apple:asdf')

答案 1 :(得分:0)

您的想法很好,但是使用RegEx构造函数时需要转义反斜杠。 MDN建议:

  

使用构造函数可以对   正则表达式。当您知道   正则表达式模式会改变,或者您不知道   模式并从其他来源(例如用户输入)获取它。

另一种选择是正则表达式文字语法:

  

正则表达式文字提供正则表达式的编译   脚本加载时的表达式。如果正则表达式   保持不变,使用它可以提高性能。

尝试以下代码:

const re = /apple:\w+/
const str = "apple"
re.test(str)

Check out the MDN docs