如何匹配Javascript正则表达式中的单个单词?
我只想在javascript中的模式后匹配一个单词(\w+) 以下是我的简单测试代码:如何匹配Javascript正则表达式中的单个单词?,javascript,regex,Javascript,Regex,我只想在javascript中的模式后匹配一个单词(\w+) 以下是我的简单测试代码: (new RegExp("apple:\w+")).test("apple:asdf"); 但是,javascript告诉我模式不匹配。这与我习惯的关于正则表达式匹配的一切都背道而驰。甚至当我在regex101.com上测试它时,我也得到了一个匹配项 用于匹配单词的约定是什么?首先,您需要在字符串文本中转义斜杠,否则它将丢失: const slashIsLost = "apple:\w+"; console
(new RegExp("apple:\w+")).test("apple:asdf");
但是,javascript告诉我模式不匹配。这与我习惯的关于正则表达式匹配的一切都背道而驰。甚至当我在regex101.com上测试它时,我也得到了一个匹配项
用于匹配单词的约定是什么?首先,您需要在字符串文本中转义斜杠,否则它将丢失:
const slashIsLost = "apple:\w+";
console.log(slashIsLost); // apple:w+
const slashIsEscaped = "apple:\\w+";
console.log(slashIsEscaped ); // apple:\w+
其次,您需要记住\w
同时匹配字母、数字和\u
字符。因此,您最好使用[A-Za-z]
字符类,或者只咬第一对字符,并使用i
标志使RegExp不区分大小写
作为旁注,不清楚为什么不在这里使用RegExp-literal:
/apple:[a-z]+/i.test('apple:asdf')
首先,您需要在字符串文本中转义斜杠,否则它将丢失:
const slashIsLost = "apple:\w+";
console.log(slashIsLost); // apple:w+
const slashIsEscaped = "apple:\\w+";
console.log(slashIsEscaped ); // apple:\w+
其次,您需要记住\w
同时匹配字母、数字和\u
字符。因此,您最好使用[A-Za-z]
字符类,或者只咬第一对字符,并使用i
标志使RegExp不区分大小写
作为旁注,不清楚为什么不在这里使用RegExp-literal:
/apple:[a-z]+/i.test('apple:asdf')
您的想法很好,但在使用正则表达式构造函数时需要避免反斜杠。MDN建议: 使用构造函数可以提供 正则表达式。当您知道 正则表达式模式将更改,或者您不知道 模式,并从另一个源(如用户输入)获取它 另一种方法是正则表达式文字语法: 正则表达式文本提供正则表达式的编译 加载脚本时的表达式。如果正则表达式 保持不变,使用此选项可以提高性能 请尝试以下代码:
const re = /apple:\w+/
const str = "apple"
re.test(str)
您的想法很好,但在使用正则表达式构造函数时需要避免反斜杠。MDN建议: 使用构造函数可以提供 正则表达式。当您知道 正则表达式模式将更改,或者您不知道 模式,并从另一个源(如用户输入)获取它 另一种方法是正则表达式文字语法: 正则表达式文本提供正则表达式的编译 加载脚本时的表达式。如果正则表达式 保持不变,使用此选项可以提高性能 请尝试以下代码:
const re = /apple:\w+/
const str = "apple"
re.test(str)
或代替
新建RegExp(转义字符串)
只需使用/apple:[a-z]+/i.test(input)
。或代替新建RegExp(转义字符串)
只需使用/apple:[a-z]+/i.test(input)
。如果需要匹配整个输入,请不要忘记使用^…$
锚定regex。正如所写的那样,它将匹配橙子sandapple:adsf代码>看起来像的副本。当我需要的时候,没有约束力的最后一票在哪里?)@raina77ow我想说它不是重复的,因为这里的OP不知道他需要逃避它们。如果需要匹配整个输入,请不要忘记使用^…$
锚定正则表达式。正如所写的那样,它将匹配橙子sandapple:adsf代码>看起来像的副本。当我需要的时候,没有约束力的最后一票在哪里?)@Raina77哦,我得说这不是复制品,因为这里的特工不知道他需要逃离他们。