使用正则表达式将任何字符串分隔成一个完整的单词,标点符号&html标记
Use regex to separate any string into an array of whole words, punctuation & html tags
我发现目前的工作是使用空格来匹配。我希望能够匹配任意HTML标签和标点符号。
var text = "<div>The Quick brown fox ran through it's forest darkly!</div>"
//this one uses spaces only but will match "darkly!</div>" as 1 element
console.log(text.match(/'S+/g));
//outputs: ["<div>The", "Quick", "brown", "fox", "ran", "through", "it's", "forest", "darkly!</div>"]
我想要一个匹配表达式,它将输出:
["<div>", "The", "Quick", "brown", "fox", "ran", "through", "it's", "forest", "darkly", "!", "</div>"]
这是一把小提琴:https://jsfiddle.net/scottpatrickwright/og0bd0xj/2/
最后,我将把所有匹配项存储在一个数组中,做一些处理(在每个单词周围添加一些带有条件数据属性的span标记),并以改变的形式重新输出原始字符串。我之所以提到这个,是因为不让字符串或多或少保持完整的解决方案是行不通的。
我在网上找到了很多接近错过的解决方案,但是我的正则表达式不够好,无法利用他们的工作。
如何:
/(<'/?)?['w']+>?|[!'.,;'?]/g
了。
你可以在HTML标签前后加一个空格,像这样:
var text = "<div>The Quick brown fox ran through it's forest darkly!</div>"
text = text.replace(/'<(.*?)'>/g, ' <$1> ');
console.log(text.match(/'w+|'S+/g)); // ## Credit to George Lee ##
我的建议是:
console.log(text.match(/(<.+?>|[^'s<>]+)/g));
在我们的regex: (<.+?>|[^'s<>]+)
中我们指定了两个字符串来捕获
<.+?> returns all <text> strings
[^'s<>]+ returns all strings that don't contain space,<,>
在第二行中你可以添加你想忽略的字符
相关文章:
- 匹配一个单词,其中候选人可以跨越顺序组(跨度)
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- 从输入值中删除最后一个单词
- 如何查找一个单词在动态创建的html表行中出现的次数
- Regex或javascript每X个连续单词中有一个单词
- Javascript:当这个单词被点击5次时,下面会显示另一个单词
- Javascript/jQuery替换tamil语言输入框中的最后一个单词
- Javascript(如果var包含一个单词,则仅更改该单词的颜色)
- 使用Javascript双击HTML中的空格时,选择上一个和下一个单词
- 检查字符串是否等于一个单词和一个数字
- Regex:使用javascript测试最后一个单词后的url中是否存在最后一个斜杠
- 使jQuery自动完成功能适用于多个单词(“跳过”一个单词)
- 使用JavaScript匹配URL中的最后一个单词
- 添加一个“;以及“;到String-js/Angular中的最后一个单词
- 我怎样才能把p中的一个单词包装在a标签中呢
- 在 javaScript 中定义函数之前,什么意思是“一个单词:”
- UIWeb查看搜索问题中出现的下一个单词
- 计算一个字母在一个单词中出现的次数
- 如何在文本区域中获取最后一个单词的位置
- 如何删除句点和前一个单词之间的空格