javascript - java脚本正则表达式过滤单词

标签 javascript regex

我有以下正则表达式:

正则表达式位于我们应用程序的一些代码中,我可以看到它分割单词。显然它删除了$#*等字符。我需要它做同样的事情,但允许使用哈希标签,因为单词现在可以有#hashtags。

"Test #words".toLowerCase().split(/\b/).filter(function(w){return w.match(/^\w+$/) }) // returns ["test", "words"]

当前的正则表达式删除了哈希值,我希望它保留。所以我得到:

["test", "#words"] 

最佳答案

您的“测试#words”.toLowerCase().split(/\b/).filter(function(w){return w.match(/^\w+$/) })执行以下操作:

  • 整个字符串转为小写
  • 字符串在任意单词边界处拆分(前导和尾随,意味着 Test #words 拆分为 [,Test, #,words,])
  • ^\w+$ 正则表达式匹配的部分(从字符串开头到结尾的 1 个以上单词字符)将保留在数组中。

您可以使用相同的匹配方法#/(?:\B#)?\w+/g一起包含:

console.log("Test #words".toLowerCase().match(/(?:\B#)?\w+/g))

模式匹配:

  • (?:\B#)? - 前面带有非单词边界的可选 #
  • \w+ - 1 个或多个单词字符(来自 [a-zA-Z0-9_] 范围)

如果上下文不是那么重要,请使用更简单的 /#?\w+/g 正则表达式,它将匹配字符串中任意位置的可选 #,后跟 1+单词字符。

关于javascript - java脚本正则表达式过滤单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38729493/

相关文章:

javascript - ionic ui-router 解析的结果没有显示在页面中

php - joomla/php 中的 jquery 链式搜索过滤器

javascript - 使用正则表达式变量作为​​普通变量 - Javascript

JavaScript 和 HTML 正则表达式不工作

Python 分组反向引用

javascript - jquery 第一次尝试时无法访问 iframe

c# - 如何将 Razor View 模态属性值传递给 JavaScript 函数

java - java RegEx 中的非捕获组

javascript - 快速表单处理,无需重定向。有数据但没有preventDefault,但重定向。不使用 PreventDefault 进行重定向,但没有数据

C++11 正则表达式匹配中的匹配