2010-10-07 101 views
0

我有一个文本字段的值为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=cs1,s2s3的值不会保存在任何地方。我的问题是我们如何检查是否已设置s1的值?我怎么可以更新s1价值,如果我更改s1alt texturl匹配的正则表达式

回答

0

的文本框的值可以替换使用此正则表达式

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

我的客人,您在PHP中使用PCRE:

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

所以

$result = preg_replace('/^(?=(?P<ES1>.*&s1=)?)(?(ES1)(?P<Left>.*&s1=)(?P<Right>.*+)$|RegexToMatchIfS1NotExist)/', '${1}newvalue${2}', ...); 
+0

如果您不需要采取与&s1 =存在与否的不同行动,我认为@BrunoLM的回答是首选。 – Vantomex 2010-10-07 11:20:03

+0

我需要检查是否存在s1 – 2010-10-07 12:29:56

0

使用此se治愈每种语言的正则表达式...

^(https?|ftp)\:\/\/([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)[email protected])?[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*(\:[0-9]{2,5})?(\/([a-z0-9+\$_-]\.?)+)*\/?(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?(#[a-z_.-][a-z0-9+\$_.-]*)?\$