Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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,我有这个字符串: var str = "{view-map:{lonField_sad:!Longitude,latField:!Handicap_Accessible},currentView:!map}"; 我试图用空格替换ALL下划线,表示任何以感叹号sing(!)开头的单词,因此字符串应如下所示: var str = "{view-map:{lonField_sad:!Longitude,latField:!Handicap Accessible},currentView:!map}"

我有这个字符串:

var str = "{view-map:{lonField_sad:!Longitude,latField:!Handicap_Accessible},currentView:!map}";
我试图用空格替换ALL下划线,表示任何以感叹号sing(!)开头的单词,因此字符串应如下所示:

var str = "{view-map:{lonField_sad:!Longitude,latField:!Handicap Accessible},currentView:!map}";
我花了几个小时试图弄明白如何做到这一点,但没有成功

您可以使用正则表达式

!([^]+)。([^]+)

并替换为
$1$2

var str = "{view-map:{lonField_sad:!Longitude,latField:!Handicap_Accessible},currentView:!map}";
console.log(str.replace(/!([^_]+)_([^]+)/g, "!$1 $2"));
试试这个。看演示

尝试使用():


Regexp
/\w+/g
选择所有以“!”开头的单词。之后,我们用
x的结果替换每个单词
x

JS代码,因为这类似于
str=str.replace(/!([^ u]+)。([^]+)([^]+)/g',)
@cloudfeet,在你评论之前包括:)忍者的d,该死的。:)我相信
在替换的字符串中也需要。我想这只适用于字符串有一个下划线的情况,但我需要替换所有出现的字符串。例如,如果没有下划线(Disability\u accessible\u more),而是有两个下划线(Disability\u accessible\u more),那么结果将是Disability accessible\u more。这将不起作用,因为
\w
也包括
\u
。因此,这将永远不会停止在
\ucode>@vks,我知道,试试这个。它可以工作,你只是不知道如何。不能检查小提琴…newaz如果你有信心,我可以知道wt的d逻辑吗?@vks,检查开发工具控制台或这个小提琴。我已经解释了答案中的逻辑。我已经更新了您的代码以替换所有下划线。
(![^_]+)_([a-zA-Z0-9]+)
var re = /(![^_]+)_([a-zA-Z0-9]+)/gm;
var str = '{view-map:{lonField_sad:!Longitude,latField:!Handicap_Accessible},currentView:!map}';
var subst = '$1 $2';

var result = str.replace(re, subst);
str.replace(/!\w+/g, function(x) { return x.replace(/_/g, ' '); })