Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.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,这是我查找电话号码的正则表达式 (([0-9]{3}[-./ ]{0,1}[0-9]{3}[-./ ]{0,1}[0-9]{4}))|([(][0-9) ]{4,5}[0-9]{3}[-]{0,1}[0-9]{4}) 在这里看到它的作用- 我的目标是忽略每个结果,如果前面的符号是# 我尝试过添加一个消极的前瞻,如下所示: (?!#)(([0-9]{3}[-./ ]{0,1}[0-9]{3}[-./ ]{0,1}[0-9]{4}))|([(][0-9) ]{4,5}[0-9]{3}[-]{0,1

这是我查找电话号码的正则表达式

(([0-9]{3}[-./ ]{0,1}[0-9]{3}[-./ ]{0,1}[0-9]{4}))|([(][0-9) ]{4,5}[0-9]{3}[-]{0,1}[0-9]{4})
在这里看到它的作用-

我的目标是忽略每个结果,如果前面的符号是#

我尝试过添加一个消极的前瞻,如下所示:

(?!#)(([0-9]{3}[-./ ]{0,1}[0-9]{3}[-./ ]{0,1}[0-9]{4}))|([(][0-9) ]{4,5}[0-9]{3}[-]{0,1}[0-9]{4})

但是它不起作用。

正则表达式本身也无能为力。您需要围绕模式匹配使用一些编程逻辑。通常的查找替换是在模式开始时使用可选组,然后检查组是否匹配。如果有,则匹配之前的字符串存在->我们应该放弃这些匹配。否则,去拿

([^#](([0-9]{3}[-./ ]{0,1}[0-9]{3}[-./ ]{0,1}[0-9]{4}))|([(][0-9) ]{4,5}[0-9]{3}[-]{0,1}[0-9]{4}))
/(#)?[0-9]{3}[-.\/ ]?[0-9]{3}[-.\/ ]?[0-9]{4}|[(][0-9) ]{4,5}[0-9]{3}-?[0-9]{4}/g
请参见下面的“无代码无值”部分:

var re=/(#)?[0-9]{3}[-.\/]?[0-9]{3}[-.\/]?[0-9]{4}[0-9]{4,5}[0-9]{3}-.[0-9]{4}/g;
var str='1012 345 6789\n#1231231(仅此可忽略)\n电话1231231\n1012.345.6789\n012/345/6789\n555-123-4567\n+1-(800)555-2468\n+1-800 555-2468';
var-res=[];
while((m=re.exec(str))!==null){
如果(!m[1]){
res.push(m[0]);
}
}

document.body.innerHTML=“+JSON.stringify(res,0,4)+”正则表达式本身无能为力。您需要围绕模式匹配使用一些编程逻辑。通常的查找替换是在模式开始时使用可选组,然后检查组是否匹配。如果有,则匹配之前的字符串存在->我们应该放弃这些匹配。否则,去拿

/(#)?[0-9]{3}[-.\/ ]?[0-9]{3}[-.\/ ]?[0-9]{4}|[(][0-9) ]{4,5}[0-9]{3}-?[0-9]{4}/g
请参见下面的“无代码无值”部分:

var re=/(#)?[0-9]{3}[-.\/]?[0-9]{3}[-.\/]?[0-9]{4}[0-9]{4,5}[0-9]{3}-.[0-9]{4}/g;
var str='1012 345 6789\n#1231231(仅此可忽略)\n电话1231231\n1012.345.6789\n012/345/6789\n555-123-4567\n+1-(800)555-2468\n+1-800 555-2468';
var-res=[];
while((m=re.exec(str))!==null){
如果(!m[1]){
res.push(m[0]);
}
}

document.body.innerHTML=“+JSON.stringify(res,0,4)+”是的,那是我的错误。但是你只是说前面有符号#的数字必须忽略,所以最后有#的数字可以捕捉。啊,我误解了OP关于前面的问题+1这也捕获了其他符号。例如:-800 555-2468@VitaliyHayda,这是否意味着这不是你要找的。如果是,为什么你的问题中没有具体说明?你说你不想要的唯一字符是
#
?@VitaliyHayda Javascript regex没有那么聪明。Javascript没有像lookback或match reset这样的奇特特性。您必须以编程方式将其从比赛中删除。是的,那是我的错误。但是你只是说前面有符号#的数字必须忽略,所以最后有#的数字可以捕捉。啊,我误解了OP关于前面的问题+1这也捕获了其他符号。例如:-800 555-2468@VitaliyHayda,这是否意味着这不是你要找的。如果是,为什么你的问题中没有具体说明?你说你不想要的唯一字符是
#
?@VitaliyHayda Javascript regex没有那么聪明。Javascript没有像lookback或match reset这样的奇特特性。你必须通过编程将其从匹配中删除。问题是消极的前瞻性…好的…前瞻性。它从匹配的第一个位置开始查看正则表达式是否不匹配。您可能需要一个Javascript没有的lookback。JS不够复杂,无法
忽略任何内容,更不用说一行了。这样做的方法是匹配罪犯,然后在匹配后忽略它或不忽略它<代码>([#])?((?:[0-9]{3}[-./]?){2}[0-9]{4}[0-9]{4,5}[0-9]{3}-?[0-9]{4})
如果捕获组1匹配,请忽略它。问题是消极的前瞻性展望……很好……向前看。它从匹配的第一个位置开始查看正则表达式是否不匹配。您可能需要一个Javascript没有的lookback。JS不够复杂,无法
忽略任何内容,更不用说一行了。这样做的方法是匹配罪犯,然后在匹配后忽略它或不忽略它<如果捕获组1匹配,则忽略它。