質問するログイン新規登録

回答編集履歴

1

RegExp lookbehind (Google Chrome 62 先行実装)

2018/01/15 17:00

投稿

think49
think49

スコア18194

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 さん