回答編集履歴
1
RegExp lookbehind (Google Chrome 62 先行実装)
answer
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
### 否定先読み
|
2
|
+
|
1
3
|
URL構文の厳密性については一考の余地がありますが、とりあえずは否定先読みだけでも要件を満たせそうです。
|
2
4
|
|
3
5
|
```JavaScript
|
@@ -6,4 +8,21 @@
|
|
6
8
|
console.log(string.match(/https://yuis.xsrv.jp/(?:[\w.-]+/)*[\w.-]*(?![\w./()-])/g)); // ["https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_36692572-d14b-431d-bc9f-f746cc443d65.png"]
|
7
9
|
```
|
8
10
|
|
11
|
+
### RegExp lookbehind (Google Chrome 62 先行実装)
|
12
|
+
|
13
|
+
Google Chrome 62 ではいわゆる、**戻り読み/後読み**の呼称で呼ばれる正規表現パターンが実装されているようです。
|
14
|
+
この機能は ECMAScript の仕様として提案されていますが、まだ未策定の段階にある為、先行実装の扱いとなります。
|
15
|
+
|
16
|
+
- [4545 - Implement RegExp lookbehind - v8 - Monorail](https://bugs.chromium.org/p/v8/issues/detail?id=4545&desc=2)
|
17
|
+
- [tc39/proposal-regexp-lookbehind: RegExp lookbehind assertions](https://github.com/tc39/proposal-regexp-lookbehind)
|
18
|
+
|
19
|
+
```JavaScript
|
20
|
+
console.log(/(?<=<)test/.test('<test>')); // true
|
21
|
+
console.log(/(?<=<)test/.test('(test)')); // false
|
22
|
+
|
23
|
+
console.log(/(?<!<)test/.test('<test>')); // false
|
24
|
+
console.log(/(?<!<)test/.test('(test)')); // true
|
25
|
+
```
|
26
|
+
|
27
|
+
|
9
28
|
Re: igar さん
|