javascript - 如何创建动态正则表达式

标签 javascript jquery regex

我正在尝试匹配字符串中的一些单词。但我没有预先确定需要查找的单词数量。

例如,我在 ubuntu-18.10-desktop-amd64.iso.torrent 中搜索 Ubuntu 18 10 将返回 true。

或者我可以在 CentOS-7-x86_64-LiveGNOME-1804.torrent 中搜索 centos 7 也会返回 true。

我不需要检查它是否是小写。

我尝试过:

$.get('interdit', function(data) {
    var lines = data.split("\n");
    $.each(lines, function(n, data_interdit) {
        var url_check = $('textarea#url').val()
        var split_forbidden = data_interdit.split(/[\s|,|_|.|-|:]+/);
        var exist = 0;
        $.each(split_forbidden, function(n, data) {
            var n = url_check.search("^("+ data +")");
            if(n != -1){
                exist = 1
            }else{
                exist = 0
            }
            console.log('Forbidden: '+ data + ' Result: ' + n);
        })
        if(exist == 1){
            console.log('found')
        }
    });
});

文件的示例数据interdit:

CentOS.7
Ubuntu-18

最佳答案

您想要在输入字符串中查找现有单词,而不考虑顺序。为此,您需要使用正向前瞻:

var search = 'Ubuntu 18 10';
var str = 'ubuntu-18.10-desktop-amd64.iso.torrent';
var re = new RegExp('^(?=.*' + search.split(/[\s,_.:-]+/).join(')(?=.*') + ')', 'i')

console.log(re.test(str));

这会生成如下正则表达式(设置了 i 标志):

^(?=.*Ubuntu)(?=.*18)(?=.*10)

关于javascript - 如何创建动态正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53943680/

相关文章:

javascript - Jquery 文本更改事件

php - Yii 不是自动的,包括 jquery

c# - 正则表达式 - 在 C# 中的括号和字母数字字符之间插入空格

regex - Golang 正则表达式 - 我做错了什么?

javascript - 打开Layers 3拖放功能,获取拖放文件的文件名

javascript - Mongodb 与和尚 : error catching and handling if db is down

JavaScript 条件忽略 IF

javascript - 使用数据属性进行拖放

javascript - 如何使用 .val() 将 var 设置为 true 或 false

regex - Ksh 脚本 : Run bash-like character substitute: ${@/. txt/}