javascript - 匹配每个单词,除非它包含文字点

标签 javascript regex

如何匹配所有单词,除非它们包含点,例如

I want to match everything except.this and similar words with dots in them

我尝试了 \b(?!\w+\.\w+)\w+\b 但这不起作用。

无论我如何使用 \w+\\. 等,正则表达式引擎仍然匹配“ignore.me”部分点后面。有一个简单的语法吗?仅仅转义点似乎不起作用。

最佳答案

我建议如下pattern :

(?:^|\s)(?:(?!\.)[\w'])+(?=\s|$|[.?!](?:\s|$))

JS/正则表达式测试:

const regex = /(?:^|\s)(?:(?!\.)[\w'])+(?=\s|$|[.?!](?:\s|$))/g;
const str = `aaa  blabla fasdfdsa ignoremenot.
bbb igno.reme ad
It's fine?`;
let m;

while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
    regex.lastIndex++;
}

// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
    console.log(`Found match, group ${groupIndex}: ${match.trim()}`);
});
}

有一个问题:您必须 trim 匹配项以删除可能出现的不必要的空格,因为我们无法在 JavaScript 的正则表达式中使用lookbehind,如下所示:(?<=^|\s)(?:(?!\.)[\w'])+(?=\s|$|[.?!](?:\s|$))

关于javascript - 匹配每个单词,除非它包含文字点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47613464/

相关文章:

ruby - 正则表达式从链接 URL 获取 ID

regex - 正则表达式在kibana上搜索数组元素

java - 二进制字符串正则表达式控制位置

javascript - 处理 Protractor 中的未知错误

javascript - 如何将数据传递给 ng-include Controller ?

在 .each 中设置 JavaScript/jQuery clearInterval

ruby-on-rails - 最佳实践 : Ruby/Rails Rspec regex testing

javascript - 使用 Javascript 弹出模式

Javascript - 具有所有可能组合的字节字符串

javascript - 如何使用 JavaScript 中的正则表达式查找 HTML 邮件中的 HTTP 链接