Regx找到用word盯着字符串并以?/ end结尾但不包含特定单词的字符串

时间:2018-05-30 21:33:12

标签: regex

Regx找到用字盯着字符串并以?/ end结尾但不包含特定字的字符串

例如,我有以下不同格式的网址,并希望捕获特定部分(页面标识符)

Home: https://www.example.com/course/home#/

courseSummary: https://www.example.com/tag/mypage/course/#/courseSummary?courseName=abc&courceTitle=MyTitle

grounddetails : https://www.example.com/tag/mypage/course/#/options/grounddetails

Certification : https://www.example.com/tag/mypage/course/#/options/Certification/segment

customer: https://www.example.com/tag/mypage/course/#/checkout/customer

但是每当“确认”字包含在URL中时,它就不应该匹配。

https://www.example.com/tag/mypage/course/#/**confirmation**?success=true

请你帮忙为它编写正则表达式

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

^\w+ *: *http(?:s):\/\/(?!.*confirmation).*(?:\?|\n)$

Regex 101 Demo



const regex = /^\w+ *: *http(?:s):\/\/(?!.*confirmation).*(?:\?|\n)$/gm;
const str = `Home: https://www.example.com/course/home#/

courseSummary: https://www.example.com/tag/mypage/course/#/courseSummary?courseName=abc&courceTitle=MyTitle

grounddetails : https://www.example.com/tag/mypage/course/#/options/grounddetails

Certification : https://www.example.com/tag/mypage/course/#/options/Certification/segment

customer: https://www.example.com/tag/mypage/course/#/checkout/customer


But whenever the 'confirmation' word contain in URL then it SHOULD NOT match.

blalba: https://www.example.com/tag/mypage/course/#/**confirmat**?success=true
blalba: https://www.example.com/tag/mypage/course/#/**confirmation**?success=true
blalba: https://www.example.com/tag/mypage/course/#/**confirmatio**?success=true
`;
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}`);
    });
}