javascript - 忽略不关心顺序的正则表达式中的换行符

标签 javascript regex

我有一个正则表达式here at scriptular.com

/(?=.*net)(?=.*income)(?=.*total)(?=.*depreciation)/i

如何使正则表达式成功匹配字符串?

字符串中没有换行符,正则表达式将会成功。我可以删除它们...但我宁愿不删除。

最佳答案

1.) dot匹配除换行符之外的任何字符。如果所需的单词在第一个单词之后的行中匹配,它不会跳过换行符。在许多正则表达式风格中,有 dotall单行 s- flag可用于使点也匹配换行符,但不幸的是不在 JS 正则表达式中。

解决方法是使用 character class包含任何字符。例如 [\s\S] 任何空白字符 \s 与任何非空白 \S[\w\W] 用于任何单词字符以及任何非单词字符,甚至[^ ] 代表什么都没有,而不是点。

2.) Anchor前瞻到字符串的 ^ 开头,因为不希望在字符串中的任何位置重复前瞻。这将极大地提高性能。

3.) 使用lazy matching对每个单词的第一个匹配感到满意。

/^(?=[\s\S]*?net)(?=[\s\S]*?income)(?=[\s\S]*?total)(?=[\s\S]*?depreciation)/i

See demo at regex101 (不知道为什么这在您的演示工具中不起作用)

此外,您可以使用 \b word boundaries确保诸如 net 之类的单词不会在 brunetnetwork... 中匹配,因此正则表达式变为 ^ (?=[\s\S]*?\bnet\b)...

关于javascript - 忽略不关心顺序的正则表达式中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42192880/

相关文章:

javascript - 保持控制始终可见

python - 正则表达式:如何匹配语言的字符集(有一些异常(exception))?

regex - PostgreSQL UPDATE 子字符串替换

regex - 使用正则表达式从 .log 文件中提取数据

sql - 为什么 Oracle SQL 中的这个正则表达式会丢失字符串的开头?

java - java中的Elasticsearch正则表达式查询未按预期工作

javascript - jquery ajax生成查询字符串如果未定义则不通过

javascript - 如何隐藏使用 !important 的 CSS 背景图片

javascript - 如何使用 javascript 强制嵌入式 Flash 电影播放器​​退出全屏模式

javascript - Ember Promise 缺少最终处理程序?