Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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:如何计算反向RegExp模式来剥离源模式匹配的字符?_Javascript_Regex - Fatal编程技术网

JavaScript:如何计算反向RegExp模式来剥离源模式匹配的字符?

JavaScript:如何计算反向RegExp模式来剥离源模式匹配的字符?,javascript,regex,Javascript,Regex,假设我有一个模式/[a-z]+100/(尽管它可以是任何模式),并且需要处理剪贴板内容以去除不属于[a-z01]范围的字符。或者更高级一些,去掉所有不符合/[a-z]+100/模式本身的东西。例如:如果剪贴板上有12345abc200def500100,则处理过的内容将被剥离到abcdef100 是否可以自动执行此过程,以便我们可以假设任何源模式都可以反转?作为仅返回与正则表达式匹配的字符串的一般响应,您可以编写一个简单的全局正则表达式,该正则表达式返回任何匹配的内容,并丢弃任何其他内容。比如说

假设我有一个模式
/[a-z]+100/
(尽管它可以是任何模式),并且需要处理剪贴板内容以去除不属于
[a-z01]
范围的字符。或者更高级一些,去掉所有不符合
/[a-z]+100/
模式本身的东西。例如:如果剪贴板上有
12345abc200def500100
,则处理过的内容将被剥离到
abcdef100


是否可以自动执行此过程,以便我们可以假设任何源模式都可以反转?

作为仅返回与正则表达式匹配的字符串的一般响应,您可以编写一个简单的全局正则表达式,该正则表达式返回任何匹配的内容,并丢弃任何其他内容。比如说

var testString = '12345abc200def500100'
var testRegex = new RegExp(/[a-z01]/)

var returnString= testString.replace(new RegExp('((?:'+testRegex.source+')+)|.', 'g'), function(full, matched){
  return (typeof matched != "undefined") ? matched : '';
});
console.log(returnString)
在控制台中运行时,记录“1abc00def00100”
您应该能够使用您想要使用的任何正则表达式来更改变量testRegex。例如,使用正则表达式[a-z][0-9]返回“c2f5”

我对您的示例没有任何意义,因为该正则表达式与给定字符串(剪贴板)中的任何内容都不匹配。但是获取“reverse”值应该只是用注释替换匹配的部分,例如,
resultingString=clipboardString.replace(/anyRegEx/g')。对我来说太笼统了。我认为你应该把问题缩小到更小,更具体的分母。d@Ejay只是注意到它无论如何都不起作用。基于正则表达式的剪贴板转换似乎不是一种明智的方法。您的意思是说
/[a-z]+|100/
?该模式声明了“有效的”可接受字符串,并且它确实与@ClasG指出的给定字符串中的任何内容都不匹配。假设输入中的任何有效值必须与
/[a-z]+100/
匹配。现在粘贴
12345abc200def500100
,您不想拒绝整个粘贴数据,只需过滤掉所有不符合
/[a-z]+100/
的内容即可。这就是我的想法。如果输入不匹配,我可以拒绝粘贴,但我希望避免这种情况。这样粘贴的用户就不会有东西坏了的感觉。