dvl*_*den 5 javascript regex jquery json
所以我有一个input[type="text"],我想将JSON对象粘贴为配置.控制台中的输出是完美的,所有内联都没有任何修剪,但现在input我有很多间距.我想摆脱那个间距并取代input价值.
例
$('#widget-json').on('input propertychange', function () {
var string = this.value.replace(/\s+/g, ''),
data = $.parseJSON( string );
$(this).val( string );
});
Run Code Online (Sandbox Code Playgroud)
这几乎可以完成这项工作,但它也会删除引号内的间距.因此,如果我有一个键/ val "sentence": "Sure thing, good to go.",那将被转换成"sentence":"Surething,goodtogo.",而我想保留引号内的间距.
JSON对象示例
{
"widget-effect": 3,
"widget-opacity-color": "#C7C9CF",
"widget-opacity-slider": "50%",
"widget-opt-close": false,
"widget-opt-scroll": true,
"widget-opt-totop": true,
"widget-text": "Spacing required within quotes"
}
Run Code Online (Sandbox Code Playgroud)
期望的输出示例
{"widget-effect":3,"widget-opacity-color":"#C7C9CF","widget-opacity-slider":"50%","widget-opt-close":false,"widget-opt-scroll":true,"widget-opt-totop":true,"widget-text": "Spacing required within quotes"}
Run Code Online (Sandbox Code Playgroud)
jQuery.trim( this.value )这根本不起作用.this.value.replace(/\s+/g, '')即使在引号内也删除了整个空格.我知道这可能是正确的结果,但我不知道如何仅在引号之外删除它.我假设可以使用正则表达式来跳过替换引号内部的间距,但我根本不熟悉它.
Avi*_*Raj 11
使用正则表达式交替运算符.
var s = '"sentence": "Sure thing, good to go."';
alert(s.replace(/("[^"]*")|\s/g, "$1"))Run Code Online (Sandbox Code Playgroud)
上面的正则表达式究竟是做什么的?
("[^"]*")捕获所有双引号块.所以在上面,"sentence"并且"Sure thing ..."被捕获(意味着这个特定部分将被存储到索引1的临时缓冲区中).
| 要么
\s匹配剩余字符串中的所有空格字符.因此它不会触及以前匹配的部分.
$1在替换部分中,指的是由第一捕获组捕获的所有字符.因此保留了第一个捕获组中的字符,并删除了匹配的空格.
| 归档时间: |
|
| 查看次数: |
6672 次 |
| 最近记录: |