删除除捕获组中包含的空白之外的所有空白
Remove all whitespace EXCEPT what is contained in the capture group
Regex方言:JavaScript
我有以下捕获组(('|").*?[^'''2]'2)
,它选择一个不包括转义引号的带引号字符串。
例如,匹配这些。。。
"Felix's pet"
'Felix''s pet'
但是,我现在想从字符串中删除所有空白,任何与此模式匹配的内容除外。是否有一种方法可以反向引用捕获组'1
,然后将其从匹配中排除?
我曾试图用我有限的RegEx知识来做到这一点,但到目前为止,我只能选择模式前面或后面的空格。
为了方便您使用我的示例,我将测试脚本保存在regexr上。
预期结果:
key : string
变为key:string
dragon : "Felix's pet"
变为dragon:"Felix's pet"
"Hello World" something here "Another String"
成为
"Hello World"somethinghere"Another String"
等等。。。
这对于正则表达式来说是非常困难的。以下工作:
result = subject.replace(/ (?=(?:(?:''.|"(?:''.|[^"''])*"|[^'''"])*'(?:''.|"(?:''.|[^"'''])*"|[^'''])*')*(?:''.|"(?:''.|[^"''])*"|[^'''])*$)(?=(?:(?:''.|'(?:''.|[^'''])*'|[^'''"])*"(?:''.|'(?:''.|[^'"''])*'|[^''"])*")*(?:''.|'(?:''.|[^'''])*'|[^''"])*$)/g, "");
我根据我之前对一个类似但不完全相同的问题的回答构建了这个答案;因此,我将请你去解释一下。
您可以在regex101.com上对其进行实时测试。
在Javascript中,可以使用带有函数的String.replace
作为参数。因此,您可以定义匹配的组,然后可以分别替换每个组。
您想要匹配所有空白
's+
并且您需要匹配所有内部引号
(('|")(?:[^'']'''2|.)*?'2)
所以你把它组合在一起
var pattern = /'s+|(('|")(?:[^'']'''2|.)*?'2)/g
然后用匿名函数作为参数编写replace语句:
var filteredString = notFilteredString.replace(pattern,
function(match, group1) { return group1 || "" })
每次匹配时,都会调用函数来提供替换字符串。正则表达式匹配空格或引号内容。引号的内容被包装为group1
,如果group1
匹配或空白或任何其他匹配的""
不匹配,则匿名函数返回group1
。
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 货币代码为欧元-金额的格式不应包含小数
- 如何包含特定于每个视图angularjs的javascript文件
- 如何删除多行HTML排列中的空白
- 我如何修复包含在captcha的addthis中的错误
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- 使用XPath选择包含文本的节点,而不考虑CasperJS中的空白
- 包含导致重定向的空白javascript文件
- webkit重定向到包含javascript内容的空白页面
- 如何在使用包含.getValue()的自动脚本时绕过单元格中的空白值
- 删除除捕获组中包含的空白之外的所有空白
- 使用jQuery.parseJSON检索包含空白的php数组
- Jquery数据表包含空白表头
- 在JavaScript中检查字符串是否为空白(即只包含空格)的最高效方法
- 不要匹配包含空白javascript的字符串
- 删除所有包含空白href的链接,并用Javascript中的文本替换它们
- responseText包含额外的空白字符(换行,换行),如何防止和删除它们
- jQuery/JavaScript修剪HTML,包含空白/空行
- Regex-若包含单词,那个么最后一个字符必须是空白字符
- 创建一个包含空白的完整三角形