Javascript:用于捕获空格和特殊字符的正则表达式,单词中的连字符除外

标签 javascript regex

目前使用 /[\W]+/g 获取所有非单词字符,这正是我想要的。

但是,当连字符没有被空格包围时(也就是说,当它们用作连接词时),我想省略它们。

例子:

 var test = [
    'e-mail', // Nothing  shouldn't be captured
    'e-commerce is great.', // Spaces and full stop should be captured
    'He - yes he - went', // Dashes and white space should be captured
    'He&-you, me-him' // &-, and the whitespace should be captured while the dash in me-him should not
    ]

最佳答案

尝试使用 ([\W]-|-[\W]|[​​^\w-])+

正则表达式中的否定很繁琐,通常您必须使用前瞻来解决问题,但这里有一个简单的解决方法。我没有匹配所有非单词字符 ([\W]),而是匹配任何不是单词字符或连字符的字符 ([^\w-]),然后在连字符被字符包围的特殊情况下添加([\W]--[\W]) .我必须先捕获连字符,否则非单词、非连字符捕获将匹配两个空格或特殊字符,而下一部分将无法提取连字符。

关于Javascript:用于捕获空格和特殊字符的正则表达式,单词中的连字符除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32459754/

相关文章:

javascript - "variable=value"的非贪婪正则表达式

javascript - map 未显示小省份

javascript - 位置 swipejs 的积分

javascript - 两个变量在 Node.js 中使用 require (引用问题)引用相同的 config.js 文件

java - 从字符串中删除自定义标签,然后格式化其内容

c++ - 在 C/C++ 中验证 DNA

php 查找表情符号 [更新现有代码]

javascript - 像 NodeJS 这样的服务器端 javascript 中的 "server"是什么?

javascript - HTML DOM : Which events do not bubble?

regex - 为什么 nextgroup 不匹配没有尾随空格的换行符?