2012-05-28 3 views
1

У меня есть строка, которая может закончиться либоРегулярное выражение для одного или соответствия

"/" 

или

"/?secure=true" 

мне нужно проверить его. Я пробовал это

\b(/(/?secure=true)?)\b 

но я не получаю совпадений с регулярным выражением. Однако, с

^(/(\$secure=true)?)$ 

0 найденных совпадений. Но это не поможет в моем случае, поскольку строка, которую я хочу проверить, будет иметь префикс с символами вроде "thisismystring/" или "thisismystring/?secure=true".

Я хочу знать, как это сделать.

+0

Вы проанализировали URL-адрес с помощью класса URL/URI? Я предлагаю вам сначала перенести его в URL или URI, прежде чем выполнять какую-либо проверку. – nhahtdh

+0

Ваш последний пример верен, просто удалите^с начала –

ответ

4

В обоих случаях будет содержать

/ 

Так что не должно быть в факультативной части.

Вы помещаете дополнительную деталь в()?

и избежать знак вопроса с обратной косой черты

/(\?secure=true)? 

И чтобы показать, что она должна закончиться, что вы положили $ в конце

/(\?secure=true)?$ 
+0

Спасибо, это работает .. :) – ria

6

Вы должны использовать символ вертикальной черты (|), чтобы указать или:

(/|/\?secure=true)$ 

Кроме того, необходимо, чтобы избежать знак вопроса, как здесь, и должны указать «$» для конца строки, но а не «^» для начала строки.

+0

, но это также соответствует этому: thisismystring/& secure = true – ria

+1

Действительно. Спасибо, исправлено. –

+0

@ria - попробуйте теперь с коррекцией Коби. –

Смежные вопросы