Регулярное выражение для соответствия URL - PullRequest
0 голосов
/ 07 октября 2010

У меня есть текстовое поле со значением http://localhost/Send/test.php?s/?a=1&o=2. Еще три текстовых поля. Если мы введем три значения, вышеупомянутый URL изменится как http://localhost/Send/test.php?s/?a=1&o=2&s1=a&s2=b&s3=c. Значение для s1,s2 и s3 нигде не сохранится. У меня вопрос, как мы проверяем, установлено ли значение для s1? И как я могу обновить значение s1, если я изменю значение текстового поля на s1alt text

Ответы [ 3 ]

0 голосов
/ 07 октября 2010

Я приглашаю вас использовать PCRE в PHP:

(?=(?P<ES1>.*&s1=)?)(?(ES1)RegexToMatchIfS1AlreadyExist|RegexToMatchIfS1NotExist)

Итак

$result = preg_replace('/^(?=(?P<ES1>.*&s1=)?)(?(ES1)(?P<Left>.*&s1=)(?P<Right>.*+)$|RegexToMatchIfS1NotExist)/', '${1}newvalue${2}', ...);
0 голосов
/ 07 октября 2010

используйте это безопасное регулярное выражение для каждого языка ...

^(https?|ftp)\:\/\/([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*(\:[0-9]{2,5})?(\/([a-z0-9+\$_-]\.?)+)*\/?(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?(#[a-z_.-][a-z0-9+\$_.-]*)?\$
0 голосов
/ 07 октября 2010

Вы можете заменить с помощью этого регулярного выражения

url.replace(/&s1=([^$]+|[^&]+)/i, "&s1=newvalue");
...