Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何匹配Javascript正则表达式中的单个单词?_Javascript_Regex - Fatal编程技术网

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

如何匹配Javascript正则表达式中的单个单词?,javascript,regex,Javascript,Regex,我只想在javascript中的模式后匹配一个单词(\w+) 以下是我的简单测试代码: (new RegExp("apple:\w+")).test("apple:asdf"); 但是,javascript告诉我模式不匹配。这与我习惯的关于正则表达式匹配的一切都背道而驰。甚至当我在regex101.com上测试它时,我也得到了一个匹配项 用于匹配单词的约定是什么?首先,您需要在字符串文本中转义斜杠,否则它将丢失: const slashIsLost = "apple:\w+"; console

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

以下是我的简单测试代码:

(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哦,我得说这不是复制品,因为这里的特工不知道他需要逃离他们。