解决
如果有人后来遇到这个问题,这就是我将RegEx更改为的内容。现在工作得很好。我删除了<之后?喜欢@WiktorStribiżew推荐。我还需要在[^]
之后添加[^ /]var re = new RegExp('(?=(<a href="https://domainName.com/[0-9]{4,}/[0-9]{2,}/[0-9]{2,}/([^][^/]+)/">))');
原始问题
我在使用这个正则表达式在Firefox和IE 11中工作时遇到了一些麻烦。它在Chrome中没有问题。
var re = new RegExp('(?<=(<a href="https://domainName.com/[0-9]{4,}/[0-9]{2,}/[0-9]{2,}/([^]+)/">))');
目标是搜索HTML代码(由WordPress REST API返回)并查找来自给定域的链接,该链接与WordPress博客帖子链接模式匹配,然后从URL末尾获取“slug”。
以下是RegEx在Chrome中返回的内容示例:
0: ""
1: "<a href="http://domainName.com/2018/02/05/some-post-slug/">"
2: "some-post-slug"
Firefox错误:“SyntaxError:无效的regexp组”(Firefox版本58.0.1(64位))
IE11错误:“SyntaxError:意外的量词”(IE11版本11.0.9600.18893)
此代码在启用了polyfill的Angular 4应用程序中运行。我有点像RegEx noob,所以非常感谢任何帮助。
polyfills.ts
/** IE9, IE10 and IE11 requires all of the following polyfills. **/
import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';
/** IE10 and IE11 requires the following for NgClass support on SVG elements */
import 'classlist.js'; // Run `npm install --save classlist.js`.
/** IE10 and IE11 requires the following to support `@angular/animation`. */
import 'web-animations-js'; // Run `npm install --save web-animations-js`.
/** Evergreen browsers require these. **/
import 'core-js/es6/reflect';
import 'core-js/es7/reflect';
/** ALL Firefox browsers require the following to support `@angular/animation`. **/
// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
/***************************************************************************************************
* Zone JS is required by Angular itself.
*/
import 'zone.js/dist/zone'; // Included with Angular CLI.
/***************************************************************************************************
* APPLICATION IMPORTS
*/
/**
* Date, currency, decimal and percent pipes.
* Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10
*/
import 'intl'; // Run `npm install --save intl`.
/**
* Need to import at least one locale-data with intl.
*/
import 'intl/locale-data/jsonp/en';