我只想在javascript中的一个模式后匹配一个单词(\ w +)。
这是我的简单测试代码:
State.Renderer = new MappedImageRenderer (new Object [] {"Active", Resources._57, "Busy", Resources._60, "Away", Resources._63});
但是,javascript告诉我该模式不匹配。这几乎与我习惯使用的正则表达式匹配完全相反。即使当我在regex101.com上进行测试时,我也找到了匹配项。
匹配单词的约定是什么?
答案 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)