質問編集履歴
2
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,8 +3,11 @@
|
|
3
3
|
「`https://www.example.com/widget/iframe/`というパターンではない」
|
4
4
|
|
5
5
|
という否定的な正規表現を実現したいです。
|
6
|
-
(このパターンは➁でのみ一致判定したいためです)
|
7
6
|
|
7
|
+
そしてその正規表現によって
|
8
|
+
|
9
|
+
「https://www.example.com/【widget以外】/【iframe以外】/」を`➀に一致`としたいです。
|
10
|
+
|
8
11
|
```php
|
9
12
|
// ➀
|
10
13
|
$url = "https://www.example.com/taro/aaa-bbb-ccc/";
|
@@ -22,9 +25,9 @@
|
|
22
25
|
を意図したのですが、これを➀について実行すると「おかしい」がechoされてしまいました。
|
23
26
|
```php
|
24
27
|
if ( preg_match( '{\Ahttps?://(www.)?example.com/(?!.*(/|widget)).*/(?!.*(/|iframe)).*}', $url ) ) {
|
25
|
-
echo '➀
|
28
|
+
echo '➀に一致';
|
26
29
|
} elseif ( preg_match( '{\Ahttps?://(www.)?example.com/widget/iframe/??[^/]+feed=/(?P<name>[^/]+)/(?P<id>[^/]+)}', $url ) ) {
|
27
|
-
echo '➁
|
30
|
+
echo '➁に一致';
|
28
31
|
} else {
|
29
32
|
echo 'おかしい';
|
30
33
|
}
|
1
試したことに追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -29,8 +29,9 @@
|
|
29
29
|
echo 'おかしい';
|
30
30
|
}
|
31
31
|
```
|
32
|
+
また、上記は「含まない」という表記ではないかと考えまして「一致しない」の意味をもつと思われる`^(文字列)`でも試みたのですが、こちらもうまくいきません。
|
32
|
-
|
33
|
+
```php
|
34
|
+
if ( preg_match( '{\Ahttps?://(www.)?example.com/^(/|widget).+/^(/|iframe).+}', $url ) ) {
|
33
35
|
|
34
|
-
「`https://www.example.com/widget/iframe/`というパターンではない」
|
35
36
|
|
36
|
-
|
37
|
+
```
|