RegExp将替换不属于十进制值的任何匹配单词

时间:2017-02-06 16:51:19

标签: javascript regex

到目前为止,这对我来说很有效,可以从字符串中查找和删除单词,但不幸的是,它也匹配数字的单个数字,这些数字是较大的十进制数字的一部分。如何修改我的Reg Expr与十进制数字不匹配,但处理任何其他非数字出现的'。'作为一个单词解析器?     `



$("#123").val(removeSubstring("this should be removed: 9. But not 9.9 or 1.9 or 9.1 or 999 but it should remove this 9 and this 9,too!","9"));

function removeSubstring(lookIn,subStringToRemove){
 
 
   return lookIn.replace(new RegExp("\\b" + subStringToRemove + "\\b","gi"),"");
  
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id=123 style="width: 100%;"></input>
&#13;
&#13;
&#13;

所需的输出应为&#34; this should be removed: . But not 9.9 or 1.9 or 9.1 or 999 but it should remove this and this ,too!。&#34;所以&#34; 9&#34;应该只删除。

2 个答案:

答案 0 :(得分:1)

如果你想删除任意数量的数字后跟点或逗号保持点和逗号,这应该适合你:

解决方案

data.replace(/\d+(\.|\,\D?)/g, '$1')

如何运作

\d+找到任意数字的数字 \.|\,找到&#39;。&#39;或&#39;,&#39;
\D?找到一个或零个非数字字符 ()创建捕获组。

$1在替换时使用第一个捕获组的内容。

Check if it works for you.

答案 1 :(得分:0)

使用负面的背后隐藏

(?<!\.|\d)9(?!\.\d|\d)

https://regex101.com/r/an8eg1/1

但这在javascript中不起作用。