Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.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 如何通过regexp获取@import语句中的URL_Javascript_Css_Regex - Fatal编程技术网

Javascript 如何通过regexp获取@import语句中的URL

Javascript 如何通过regexp获取@import语句中的URL,javascript,css,regex,Javascript,Css,Regex,我使用这个regular表达式获取CSS文本的@import语句(如果有)。这是成功的,例如: RegExp: (?:^|\s)?(?:@import)(?:\s)(?:url)?(?:(?:(?:\()(["'])?(?:[^"')]+)\1(?:\))|(["'])(?:.+)\2)(?:[A-Z\s])*)+(?:;) Input: @import url('https://meyerweb.com/eric/tools/css/reset/reset200802.css');@impo

我使用这个
regular表达式
获取CSS文本的
@import
语句(如果有)。这是成功的,例如:

RegExp:
(?:^|\s)?(?:@import)(?:\s)(?:url)?(?:(?:(?:\()(["'])?(?:[^"')]+)\1(?:\))|(["'])(?:.+)\2)(?:[A-Z\s])*)+(?:;)

Input:
@import url('https://meyerweb.com/eric/tools/css/reset/reset200802.css');@import url('http://opdetect.com/x/1-2-2.css');:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace}

Result:
@import url('https://meyerweb.com/eric/tools/css/reset/reset200802.css');
@import url('http://opdetect.com/x/1-2-2.css');
但是,我想要这样的结果

Expected Result:
https://meyerweb.com/eric/tools/css/reset/reset200802.css
http://opdetect.com/x/1-2-2.css
我该怎么做呢?

这可能会帮助您……
@import(url\(\”?)(url\()(\”)(*?((1)\”)+(?(2)\)+(?(3)\”);

在这里签出:

您可以使用此正则表达式,它基于您的:

(?:^|\s)?(?:@import)(?:\s)(?:url)?(?:(?:(?:\()(["'])?(?:https?:)?([^"')]+)\1(?:\))|(["'])(?:.+)\2)(?:[A-Z\s])*)+(?:;)
我已将非捕获组更改为捕获组,并创建了一个包含“
https?”:
”的新非捕获组

您需要设置
'global'
标志

您想要的结果将在
组2

根据更改后的期望结果进行编辑(
“http
:”现在包含在匹配中):

编辑(发现错误,更改了反向引用):

您的结果将在
2或
组4中。

如何使用:

var input = 'your css';
var regex = / (?:^|\s)?(?:@import)(?:\s)(?:url)?(?:(?:(?:\()(["'])?([^"')]+)\1(?:\))|(["'])(.+)\3)(?:[A-Z\s])*)+(?:;)/g;
var matches = regex.exec(input);
for (var i = 0; i < matches.length; i++)
{
    var output = matches[i][2] + matches[i][4];  // one will be blank
    Console.WriteLine(output);
}
var-input='yourcss';
var regex=/(?:^\s)?(?:@import)(?:\s)(?:url)?(?:(?:(?:\()([“]))([^“)]+)\1(?:\)|([“)))(.+)\3)(?:[A-Z\s])+(?:)/g;
var matches=regex.exec(输入);
对于(var i=0;i
也许这对你有帮助

(https?:\/\/.+\.css)(?='\);@)|(http:\/\/.+\.css)

您的url在第1组和第2组中

这适用于导入语句的所有不同符号吗?正则表达式只针对@import url(');类导入查询编写。
var input = 'your css';
var regex = / (?:^|\s)?(?:@import)(?:\s)(?:url)?(?:(?:(?:\()(["'])?([^"')]+)\1(?:\))|(["'])(.+)\3)(?:[A-Z\s])*)+(?:;)/g;
var matches = regex.exec(input);
for (var i = 0; i < matches.length; i++)
{
    var output = matches[i][2] + matches[i][4];  // one will be blank
    Console.WriteLine(output);
}
(https?:\/\/.+\.css)(?='\);@)|(http:\/\/.+\.css)