Javascript 正则表达式以开头,包含这些,而不是以结尾?
我需要一个正则表达式来查找以下示例中的所有比较部分Javascript 正则表达式以开头,包含这些,而不是以结尾?,javascript,regex,Javascript,Regex,我需要一个正则表达式来查找以下示例中的所有比较部分 var magicalRegex = ""; var example = '({Color}=="red"|{Color}=="yellow")&{Size}>32'; example.replace(magicalRegex, function (matchedBlock) { console.log(matchedBlock); });
var magicalRegex = "";
var example = '({Color}=="red"|{Color}=="yellow")&{Size}>32';
example.replace(magicalRegex, function (matchedBlock) {
console.log(matchedBlock);
});
//so i want to see the following result on console
//{Color}=="red"
//{Color}=="yellow"
//{Size}>32
事实上,我做了一些事情,但无法完成,你也可以检查以下模板,我无法完成
\{.*?(==|>)
谢谢回答
根据您在regex101上的示例以及代码段中的字符串(两个不同的字符串),下面的regex将完全满足您的需要
答复1
您可以看到这个正则表达式正在使用
答复2
注意,我在上面的正则表达式中添加了单引号和双引号。如果只需要双引号,请使用以下正则表达式
({.*?}(?:==|>)(?:\d+|".*?"))
您可以看到这个正则表达式正在使用
解释
这些正则表达式的工作原理如下:
{
,后跟任意字符(除换行符外)任意次数,但尽可能少的匹配,后跟}
=
或
“某物”
预期结果 输入 请注意,以下两个字符串用于测试目的。一个字符串出现在问题中,另一个字符串出现在OP提供的链接中
({Renk}=="kirmizi"or{Renk}=="sari")or{Size}>32
({Color}=="red"|{Color}=="yellow")&{Size}>32
输出
注意,下面提到的输出指定了匹配的内容/捕获组1(因为整个正则表达式都在一个捕获组中)。忽略任何其他组,因为它们对整个问题/答案不重要
{Renk}=="kirmizi"
{Renk}=="sari"
{Size}>32
{Color}=="red"
{Color}=="yellow"
{Size}>32
我需要一个能打败谷歌的新搜索引擎,你能给我吗?所以这不是一个免费的编码服务,也不是一个教程网站。请尝试自己解决问题,当你在尝试不同的方法后陷入困境时,请继续发帖。谢谢
({.*?}(?:==|>)(?:\d+|)(([“]?).*?\2))
?我将之前的评论移到了一个答案上。@kadir950您应该在stackoverflow中发布所有相关代码,以备将来查看。例如,regex101出现故障(即资金不足),用户仍然可以看到您尝试的内容,并且可以在regex102上测试它链接到ReGEX101仍然是非常有益的,但它确实允许代码的备份。@ CTRAND您是对的,我考虑您的建议。谢谢。匹配<代码> {Rek==“SARI”)或{Sig}}。>32@sln哪一个?两者都有指向regex101的链接,并且都按照上面的说明执行。答案2正是我所需要的。我还更正了我问题中的错误。非常感谢@ctwheels提供的详细和有用的答案。@kadir950您应该使用以下正则表达式:(\w+(?:====|>)(?:\d+\。\d*。“*?”)
。此正则表达式将捕获数字和小数(如果有)任何长度和有效格式。您的正则表达式将只捕获单个数字/十进制组合,例如3.2
,但它不会捕获10.2
,而是将捕获10
,因为您的十进制检查设置不正确。此外,正则表达式开头附近的点是无用的,因为您知道每个变量e name仅由\w
字符组成。它后面的
会引起问题。@老实说,用JavaScript很难做到这一点。与大多数语言相比,它在正则表达式方面有更多的限制。如果用PCRE正则表达式(即PHP)实现这一点,这将更容易实现。最好的办法是创建一个合适的解析器,并使用多个正则表达式来解析您要查找的信息。
{Renk}=="kirmizi"
{Renk}=="sari"
{Size}>32
{Color}=="red"
{Color}=="yellow"
{Size}>32