Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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,我应该做什么测试来获取模式“$”+someSingleCharacter+“$”的子字符串的所有实例 例如,在以下字符串中: “我们需要每$1$天吃$0$西瓜”您想要使用的正则表达式是\$(.)\$ 它在两个$符号中查找一个单个字符()。您的正则表达式应该是: /\$.\$/g 这里是除新行以外的任何字符。如果要匹配新行字符,请使用 /\$(?:.|\n)\$/g 请注意,它也将匹配$$。如果你想避免它,使用 /\$[^\$]\$/g 然而,尽管你没有问,我很确定你想要这样的东西: fun

我应该做什么测试来获取模式“$”+someSingleCharacter+“$”的子字符串的所有实例

例如,在以下字符串中:


“我们需要每$1$天吃$0$西瓜”

您想要使用的正则表达式是
\$(.)\$

它在两个
$
符号中查找一个单个字符(
)。

您的正则表达式应该是:

/\$.\$/g
这里
是除新行以外的任何字符。如果要匹配新行字符,请使用

/\$(?:.|\n)\$/g
请注意,它也将匹配
$$
。如果你想避免它,使用

/\$[^\$]\$/g
然而,尽管你没有问,我很确定你想要这样的东西:

function replace(str, ...values){
  return str.replace(/\$\d+\$/g, () => values.shift());
}

var exampleStr = 'We need to eat $0$ melons per $1$ days.';
var replaced = replace(exampleStr, 'one', 'two');

console.log(replaced);

错。正如OP所说,他只想在美元符号之间匹配一个字符。。。。所以更确切地说是
“\$(“+0+”)\$”
和/或
“\$(“+1+”)\$”
。。。但在我看来,似乎OPs的实际任务无论如何都不需要正则表达式。虽然所有这些都可以作为正则表达式使用,但这仍然不是OP想要的-他想要一个简单字符串模式可以使用的正则表达式,即
替换(“$”+0+“$”,“123”)
@Filburt。我认为你错了。如果你看他的例子,他有两种不同的模式(也许他在某个字符串中有n种不同的模式),所以他必须使用正则表达式。另外,将字符串作为第一个参数传递给
string.prototype.replace
函数将导致它只替换第一个出现的模式。当然,但是他为什么要用相同的值替换两个不同的模式呢?在任何情况下都是典型的XY问题,除非OP给出了他示例所需的输出。@Filburt。他从来没有说过他想替换这些事件。但无论如何,我在我的答案中添加了我认为OP想要的内容。不需要在字符集中转义美元符号。你确定需要正则表达式吗?如果要替换,可以使用简单的字符串模式。变量
someSingleCharacter
和示例字符串所需的输出匹配是什么?看来你的问题在不知道的情况下是无法回答的。