回答編集履歴

3

正規表現の修正

2017/11/05 08:35

投稿

think49
think49

スコア18156

test CHANGED
@@ -92,13 +92,13 @@
92
92
 
93
93
 
94
94
 
95
- "https://teratail.com/questions/99172/" を保証するなら、いくつか対策はあります。
95
+ "https://teratail.com/questions/99172" を保証するなら、いくつか対策はあります。
96
96
 
97
97
 
98
98
 
99
99
  1. `location.host` を見る
100
100
 
101
- 2. `/^/questions/(\d+)//.exec(location.pathname)` でマッチさせる
101
+ 2. `/^/questions/(\d+)(?=$|/)/.exec(location.pathname)` でマッチさせる
102
102
 
103
103
 
104
104
 

2

正規表現の修正

2017/11/05 08:34

投稿

think49
think49

スコア18156

test CHANGED
@@ -98,7 +98,7 @@
98
98
 
99
99
  1. `location.host` を見る
100
100
 
101
- 2. `location.pathname` を `//questions/(\d+)//` でマッチさせる
101
+ 2. `/^/questions/(\d+)//.exec(location.pathname)` でマッチさせる
102
102
 
103
103
 
104
104
 

1

質問文の追記を読んで

2017/11/05 08:33

投稿

think49
think49

スコア18156

test CHANGED
@@ -1,6 +1,14 @@
1
+ ### 要件の確認
2
+
3
+
4
+
1
5
  「Aの処理」と「Bの処理」で**何をしたいのか**を具体化した方が良いのでは、と思います。
2
6
 
3
7
  単純に考えると、ファイルパスからファイル名やディレクトリ名を抽出するコードでしょうか。
8
+
9
+
10
+
11
+ ### DRY (Don't repeat yourself)
4
12
 
5
13
 
6
14
 
@@ -44,4 +52,54 @@
44
52
 
45
53
 
46
54
 
55
+ ### 質問文の追記を読んで
56
+
57
+
58
+
59
+ > ■A → https://teratail.com/questions/99172
60
+
61
+ > Aの処理で99172を取得したい。
62
+
63
+ >
64
+
65
+ > ■B → https://teratail.com/questions/99172/*/
66
+
67
+ > Bの処理で99172を取得したい。
68
+
69
+
70
+
71
+ 前方からindexを辿れば、インデックス値は固定になると思います。
72
+
73
+
74
+
75
+ ```JavaScript
76
+
77
+ function getFilePathTokenByIndex (index /* [, location] */) {
78
+
79
+ return (arguments.length < 1 ? location : arguments[1]).pathname.slice(1).split('/')[Number(index)];
80
+
81
+
82
+
83
+ }
84
+
85
+
86
+
87
+ console.log(getFilePathTokenByIndex(1, {pathname: '/questions/99172'})); // "99172"
88
+
89
+ console.log(getFilePathTokenByIndex(1, {pathname: '/questions/99172/1/'})); // "99172"
90
+
91
+ ```
92
+
93
+
94
+
95
+ "https://teratail.com/questions/99172/" を保証するなら、いくつか対策はあります。
96
+
97
+
98
+
99
+ 1. `location.host` を見る
100
+
101
+ 2. `location.pathname` を `//questions/(\d+)//` でマッチさせる
102
+
103
+
104
+
47
105
  Re: kimurayu さん