Javascript 如何通过只考虑动态部分的空间来比较两个句子?

Javascript 如何通过只考虑动态部分的空间来比较两个句子?,javascript,node.js,regex,Javascript,Node.js,Regex,我需要比较两个句子。第一个是在如下所示的数据库中定义的 var text1 = "Dear {#dynamic#} {#dynamic#} Welcome to MAX private ltd" 下面给出了来自客户的文本 "var text2 = "Dear joe harry Welcome to MAX private ltd" 在这里,代替动态,客户可以替换任何值并将其作为输入发送(0-10),这是动态内容的字符限制 我需要比较两个句子

我需要比较两个句子。第一个是在如下所示的数据库中定义的

var text1 = "Dear {#dynamic#} {#dynamic#} Welcome to MAX private ltd"
下面给出了来自客户的文本

"var text2 = "Dear joe harry Welcome to MAX private ltd"
在这里,代替动态,客户可以替换任何值并将其作为输入发送(0-10),这是动态内容的字符限制

我需要比较两个句子并返回答案。这里的问题是,除了动态部分之外,我们不应该考虑句子的另一部分中的空格。比如说,

   "var text3 = "Dear joe harry Welcome to MA Xprivatel td"
当比较text1和text3时,即使我们在MA Xprivatel td.附近有空格,它也应该是有效的。但是对于动态部分,如果
{{dynamic}}{dynamic}
连续出现,包括空格在内最多可以是20个字符。如果两个
{#dynamic#}{#dynamic#}
对于空格,包括空格在内的最大字符限制可以是21

我现在的代码如下

   text1 = text1.replace(/(^|.)\s($|.)/g, (x, g1, g2) => (x == "} {" ? "}\\s+{" : g1 + "\\s\*" + g2));
   var separators_regex = /{#dynamic#}|((\s\*))/gi;
   text1= text1.replace(separators_regex, (x, y) => y ? y : ".{0,10}"); 
   let regex1 = RegExp("^" + text1+ "$", "i");
   if (!regex1.test(text2)) {  // or regex1.test(text3)
        Status = "Fail"  
    }
 
无论我尝试什么,在某些情况下它都失败了。上面的代码对于text3是失败的。 我用这些太久了。谁能帮我一下吗?

你可以用

var text2=“亲爱的1234567890 12345678901欢迎来到MAX private ltd”
var text1s=[“亲爱的{#dynamic}{{#dynamic}欢迎来到MAX private ltd{#dynamic}];
var text2=“亲爱的joe harry欢迎来到MAX private ltd”;
for(变量text1/text1s){
var rx=new RegExp(text1.replace(/\s*(\{\35; dynamic}(?:\s*\{\35; dynamic})*)/g,(x,y)=>
'\\s*{0',+((y.match(/\{dynamic#}/g)\{124; |['').length*10+(y.match(/\s/g)| | |.length)+'))
控制台日志(rx)
控制台日志(接收测试(文本2))

}“码>试<码>码>码>码>码>码>试<<码>码>码>码>码>码>试<<码>码>码>码>试<<码>码>码>试<<码>码>码>试<<码>码>var>rx>rx>var=码>rx>rx>码>rx>新RegExp=新regEXT<<<<<<<<{{上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述<<<<<动态动态动态动态动态动态(动态动态动态动态(35535五五五五五五五五五五五五五五35五五五五五五五五五\35五五五五???????????????????????????}}}}}}}}}}}}((((:::::::::żew“亲爱的{动态{动态{欢迎来到MAX private ltd{动态{欢迎来到MAX private ltd',=>text2=“亲爱的1234567890012345678900欢迎来到MAX private ltd”--这个场景对我来说失败了。请建议。这是否意味着
{动态}
之前的空格应该成为可选的?再次“var text3=”亲爱的joe harry欢迎来到MA Xprivate td”对于这一点,它是失败的。你能帮忙吗?@sai好的,我理解不应该考虑初始空白块。我在第一次
\s*
之后捕获了匹配,现在它一定是你想要的。亲爱的先生,它仍然不起作用,var text3=“亲爱的joe harry欢迎来到MAX privatel td”你的意思是说在
{dynamic}
部分中可以有任意数量的空格吗?它不是真正的
{0,10}
,而是更像
(?:\s*\s){0,10}
,仅计算非空白字符?然后将
'\\s*{0',
替换为
'(?:\\s*\\s){0',
不,不,先生,如静态部分“亲爱的joe harry欢迎(空间)(空间)到MAX privatel td”…此处fr示例在Welcome或MAX之后,或除动态部分之外的任何位置,可能有也可能没有应匹配的空格或多个空格。。