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

質問編集履歴

2

追記

2020/07/30 20:25

投稿

gongitune3
gongitune3

スコア12

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

試したことに追加

2020/07/30 20:25

投稿

gongitune3
gongitune3

スコア12

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
+ ```