【问题标题】:RegEx Expression for JSJS 的正则表达式
【发布时间】:2021-07-11 00:06:22
【问题描述】:

我的任务是检查输入字符串是否匹配模式列表(在 JS 中)。我希望看到 Regex,并且之前没有使用过这个工具的经验。我看过一些教程;但是,无论我尝试过什么都失败了。在为以下每种模式编写正则表达式时,我能否获得一些帮助?

对于任何有 Regex 经验的人来说,这应该是超级简单的。在此先感谢:)

Expressions are (* means it could by a string of any length and ? means its a single character):
/*/Resources/Static
*/Resources/Static
Resources/*/Static
Resources/*/*/*/Static
Resources/Static/*
Resources/Static/*/
/?/Resources/Static
?/Resources/Static
Resources/?/Static
Resources/???/Static
Resources/Static/?

【问题讨论】:

  • 只需将每个* 替换为.* 并将每个? 替换为.。然后在开头添加^,在末尾添加$

标签: javascript node.js regex


【解决方案1】:

通过“将匹配模式列表”,我假设您的意思是您想知道字符串是否与您列出的任何模式匹配。将来测试正则表达式的好地方是RegExr

回答

regex = /(\/.*\/Resources\/Static)|(.*\/Resources\/Static)|(Resources\/.*\/Static)|(Resources\/.*\/.*\/.*\/Static)|(Resources\/Static\/.*)|(Resources\/Static\/.*\/)|(\/.\/Resources\/Static)|(.\/Resources\/Static)|(Resources\/.\/Static)|(Resources\/...\/Static)|(Resources\/Static\/.)/;

goodString = "abc/Resources/Static"; // String to test that passes
badString  = "Bad String"; //String to test that fails

console.log(regex.test(goodString)); // true
console.log(regex.test(badString)); // false

注意:您的问题中列出的一些模式是多余的。例如Resources/*/Static 将匹配所有Resources/*/*/*/StaticResources/???/Static(使用您上面使用的语法)。我没有从我的答案中删除冗余。

符号的含义

\ -- 逃跑。将下一个符号视为文本。

. -- 除换行符以外的任何字符。如果您想要任何字符,包括换行符,请改用(.|\n)

| -- 或。

* -- 匹配前一个事物 0 次或多次。 .* 表示匹配任何字符(换行除外)0 次或多次。如果“任意长度的字符串”是指 1 个或多个字符,请使用 +

( some text ) -- 捕获组。当与| 一起使用时,它基本上意味着您希望它匹配一个组或另一组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 2014-11-08
    • 2017-12-29
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多