Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用正则表达式匹配路径的中间?_Javascript_Regex - Fatal编程技术网

Javascript 使用正则表达式匹配路径的中间?

Javascript 使用正则表达式匹配路径的中间?,javascript,regex,Javascript,Regex,我有一个varshowNo,它是目录开头的输入 示例:var showNo=“101B” showNo之后是包含空格和其他由其他部门在网络上设置的垃圾的字符 示例:/101B海滩之旅/ 我需要在其中使用子目录: 示例:/101B海滩之旅/资产/工具/ 有没有办法使用regex和变量来避免扫描所有目录并尝试匹配前4个字符的子字符串 var directory = str.match(/\/101B[^\/]+\//)[0]; 将与以变量开头的第一个目录名匹配 更重要的是,这个想法如下: 匹配以目

我有一个var
showNo
,它是目录开头的输入

示例:
var showNo=“101B”

showNo
之后是包含空格和其他由其他部门在网络上设置的垃圾的字符

示例:
/101B海滩之旅/

我需要在其中使用子目录:

示例:
/101B海滩之旅/资产/工具/

有没有办法使用regex和变量来避免扫描所有目录并尝试匹配前4个字符的子字符串

var directory = str.match(/\/101B[^\/]+\//)[0];
将与以变量开头的第一个目录名匹配

更重要的是,这个想法如下:

  • 匹配以目录斜杠开头的前四个字符串文字

  • 然后匹配不是目录斜杠的任何字符。“不是”由^表示

  • 然后再重复2次,重复0次或更多次

  • 最后匹配目录斜杠

  • 我怀疑你在“非”角色类中遇到了麻烦。这有时很棘手,但一旦你做到了,这是一条非常有用的捷径

    --编辑--

    实际上,在重读时,我怀疑您在正则表达式中使用变量时遇到了问题,对吗? 这也很容易,只要你知道怎么做

    可以先将其构造为字符串:

    var regex_string = "/" + showNo + "[^/]+/";
    
    然后将其“编译”成一个正则表达式,您可以正常使用该正则表达式:

    var regex_dir = RegExp(regex_string);
    
    var directory = str.match(regex_dir);
    

    希望这有帮助

    谢谢编辑Paul,但我希望这会有所帮助。我想你的意思是,你的第一次使用
    str.match(/\/101B[^\/]+\/)
    。或者,如果不使用regex文本,则不需要对
    /
    进行转义,只需执行以下操作:
    str.match('/'+showNo+'[^/]+/')