Regex捕获空格和特殊字符,除了单词中的连字符
Javascript: Regex to capture white space and special characters EXCEPT hyphens within words
目前使用/['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字符串中的前三个连字符
- regex中连字符的这种用法有效吗
- 跳过用户输入的文本字符串中的特殊字符,并在 Javascript 中的每个单词后添加连字符
- 在数组中的偶数之间插入连字符
- 在javascript中组合使用连字符连接的两个字符串
- 考虑到我在JavaScript中使用.replace.更改了特定单词中间的另一个字符,我如何在该单词之前添加字符
- 匹配单词中两个相等的字符,并替换为一个RE
- 如何在jquery中使用replace和regex在单词的大写字符前插入空格
- 将标题页中的单词大写,直到连字符
- 在javascript中查找特定单词(正则表达式)中的字符类型
- 作为 JavaScript 中每 4 个字符的连字符
- 如何在 ASP.NET 文本框输入中添加连字符
- 从所有单词中替换,即使用破折号分隔,第一个字符用大写[更简单的方法]
- 仅匹配给定字符串中单词序列中的字符
- 如何在焦点上隐藏jquery掩码中的括号和连字符
- 在 javascript 中查找非单词、非空格和非连字符
- Regex捕获空格和特殊字符,除了单词中的连字符
- 在网页抓取中连字符转换成逗号
- 获取字符串中连字符后的数值