javascript - 正则表达式捕获除数字和单词列表之外的所有字符

标签 javascript regex string replace

我敢肯定有人问过类似的问题,但我的需求似乎也有一点扭曲,所以我无法让它完全按预期工作。

使用 javascript 我想去除所有字符的字符串,除非它匹配某些模式。 IE。我想保留所有数字和表达式,例如 %millionbillion320b

我打算匹配所有应该被剥离的字符,即

I want to mark all non numb3ers but not million, billion, 20123 etc. The thing is I also don't want to mark 30billion for instance or 30%.

到目前为止,我一直停留在 (?:(?![0-9]).)+ 但这只给了我

I want to mark all non numb3ers but not million, billion, 20123 etc. The thing is I also don't want to mark 30billion for instance or 30%.

编辑

实际上我刚刚意识到我可以使用以下正则表达式突出显示正确的位置

(?:[0-9]|[0-9]?million|[0-9]?billion|[0-9]?%)

但是我该如何将这些匹配项连接成一个字符串呢?我的最终目标是

3 million billion 20123 30billion 30%

使用 javascript。

最佳答案

您可以使用此匹配 + 连接 操作:

s = `I want to mark all non numb3ers but not million, billion, 20123 etc. The thing is I also don't want to mark 30billion for instance or 30%`;

var r = s.match(/\d*[mb](?:illion)?\b|\d+%?/ig).join(' ');

console.log(r);
//=> 3 million billion 20123 30billion 30%

正则表达式详细信息:

  • \d*:匹配0个或多个数字
  • [mb]:匹配mb
  • (?:illion)?:可选匹配illion
  • \b:断言单词边界
  • |:或者
  • \d+%?:匹配 1 个以上的数字(可选)后跟 %

关于javascript - 正则表达式捕获除数字和单词列表之外的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59033502/

相关文章:

javascript - 如何重新启动顺序模式,从单击的元素开始

javascript - Node.js 和 ExpressJS body-parser 包检索数据

java - 正则表达式匹配以特定数字开头并以分号结尾的字符串

Python:如何使用正则表达式显示文本文件中的最高数字

javascript - 根据文本中出现的数字排序

c++ - 逐行读取输入并转换为 vector 并打印

javascript - 使用 jQuery 查找字符串值 "Red"是否在类中?

javascript - ajaxStart 取消 jQuery 自动完成

c++ - regex_match 有什么问题?很简单的表达

string - 如何在 Julia 中用零填充格式化整数?