<html>
<head>
<title>Direct e-SCOTT</title>
<meta http-equiv="content-Type" content="text/html;charset=x-sjis">
</head><body>
<form method="POST" action="/DSCT1000">
<b><font size=3>INPUT FORM<p>
USERID<input type="text" name="userId" size=8 length=8 value="kkk">
PASSWORD<input type="text" name="passwd" size=8 length=8 value="000000">
</form>
</body>
</html>求一正则,将上面html中,value后面的值取出。越简洁越好,因为有很多这样的值。本人正则不懂,先谢谢了。
{
private static String str = "<html>\r\n" +
"<head>\r\n" +
"<title>Direct e-SCOTT</title>\r\n" +
"<meta http-equiv=\"content-Type\" content=\"text/html;charset=x-sjis\">\r\n" +
"</head><body>\r\n" +
"<form method=\"POST\" action=\"/DSCT1000\">\r\n" +
"<b><font size=3>INPUT FORM<p>\r\n" +
"USERID<input type=\"text\" name=\"userId\" size=8 length=8 value=\"kkk\">\r\n" +
"PASSWORD<input type=\"text\" name=\"passwd\" size=8 length=8 value=\"000000\">\r\n" +
"</form>\r\n" +
"</body>\r\n" +
"</html>\r\n"; public static final Pattern KEYPT = Pattern.compile("\\svalue=\"\\w*\"",
Pattern.UNICODE_CASE); public static void main(String[] args) throws IOException
{
Matcher m = KEYPT.matcher(str);
while (m.find())
{
System.out.println(m.group());
}
}
}
里面value后面的值,上面那句话就是取得“kkk”
拜托了。
function getAllValues(str){
var reg = /<input[^>]*value="(\w+)/gm;
var result = str.match(reg);
return result;
} var str = 'USERID<input type="text" name="userId" size=8 length=8 value="kkk"><input value="gg">';
alert(getAllValues(str));
function getValueByName(str,paraname){
var reg = new RegExp('<input[^>]*name="'+paraname+'[^>]*value="(\\w+)');
var result = reg.exec(str);
if(result)
return result[1];
}
str = 'USERID<input type="text" name="userId" size=8 length=8 vale="kkk">';
alert(getValueByName(str,'userId'));
value="000000"
我想要的结果是:kkk,000000
这是我调用service后,返回的电文,我要把value后面的值取出来,更新到数据库里面。
谢谢
String zz = "value=\"([\u4e00-\u9fa5]*\\w*)\"\\s*";
Pattern p1 = Pattern.compile(zz);
Matcher m1 = p1.matcher(s);
if (m1.find()) {
System.out.println(m1.group(1));
} else {
System.out.println("no match");
}
不用这么麻烦
var inputs = document.getElementsByTagName("input");// 获取到 input 开头的元素
// 然后迭代 inputs 将 inputs.values 保存到你想保存的地方就行了
我的不止有一个input,我的返回电文有多个这样的,你的只能解析出一个
// 过来抢分了:)
package test;import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/**
* @author - yy
* @time - Dec 10, 2008 2:53:01 PM
*/
public class Test7 {
/**
* 将html中的所有value="xyz"或者value='xyz'中xyz提取出来,value=xyz的未完成
* @param html
* @return
*/
public String[] getValues(String html) {
final Pattern pattern = Pattern.compile("\\svalue=(['\"])(.*?)\\1", Pattern.MULTILINE);
Matcher m = pattern.matcher(html);
List<String> list = new ArrayList<String>();
while (m.find()) {
list.add(m.group(2));
}
return list.toArray(new String[0]);
}
public static void main(String[] args) throws IOException {
String str = "<html>\r\n<head>\r\n<title>Direct e-SCOTT</title>\r\n"
+ "<meta http-equiv=\"content-Type\" content=\"text/html;charset=x-sjis\">\r\n"
+ "</head><body>\r\n<form method=\"POST\" action=\"/DSCT1000\">\r\n"
+ "<b><font size=3>INPUT FORM<p>\r\n"
+ "USERID<input type=\"text\" name=\"userId\" size=8 length=8 value=\"kkk\">\r\n"
+ "PASSWORD<input type=\"text\" name=\"passwd\" size=8 length=8 value=\"000000\">\r\n"
+ "</form>\r\n</body>\r\n</html>\r\n";
String[] rs = new Test7().getValues(str);
System.out.println(Arrays.deepToString(rs));
// 输出[kkk, 000000]
}
}
哎,如果页面上有 <input type="submit" value="OK"> 难道这里面的 OK 也要取出来么?第二次问一下:
是否只是取 input 中 type 为 text 的 value 值,还是看到有 value 这个属性的都取出来?
import java.util.regex.Pattern;public class Test { public static void main(String[] args) {
String str = "<html>\n" +
"<head>\n" +
"<title>Direct e-SCOTT</title>\n" +
"<meta http-equiv=\"content-Type\" content=\"text/html;charset=x-sjis\">\n" +
"</head><body>\n" +
"<form method=\"POST\" action=\"/DSCT1000\">\n" +
"<b><font size=3>INPUT FORM<p>\n" +
"USERID <input type=\"text\" name=\"userId\" size=8 length=8 value=\"kkk1\">\n" +
"PASSWORD <input type=\"text\" name=\"passwd\" size=8 length=8 value=\"000001\">\n" +
"USERID <input type=\"text\" name='userId' size=8 length=8 value='kkk2'>\n" +
"PASSWORD <input type=\"text\" name='passwd' size=8 length=8 value='000002'>\n" +
"USERID <input type=\"text\" name=userId size=8 length=8 value=kkk3>\n" +
"PASSWORD <input type=\"text\" name=passwd size=8 length=8 value=000003>\n" +
"USERID <input type=\"text\" name=\"userId\" size=8 value=\"kkk21\" length=8>\n" +
"PASSWORD <input type=\"text\" name=\"passwd\" size=8 value=\"000021\" length=8>\n" +
"USERID <input type=\"text\" name='userId' size=8 value='kkk22' length=8>\n" +
"PASSWORD <input type=\"text\" name='passwd' size=8 value='000022' length=8>\n" +
"USERID <input type=\"text\" name=userId size=8 value=kkk23 length=8>\n" +
"PASSWORD <input type=\"text\" name=passwd size=8 value=000023 length=8>\n" +
" <input type=\"submit\" name=passwd size=8 value=\"提交\" length=8>\n" +
" <input type=\"reset\" name=passwd size=8 value=\"重置\" length=8>\n" +
"</form>\n" +
"</body>\n" +
"</html>";
// 如果仅需要 input type="text" 中的 value 的话使用这个
String regex = "<input[^>]+type\\s*=\\s*([\"']?)text\\1[^>]+value\\s*=\\s*([\"']?)([^\"'>\\s]+)\\2";
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(str);
while(matcher.find()) {
System.out.println(matcher.group(3));
}
System.out.println("--------------------");
// 如果仅需要所有 input 中的 value 的话使用这个
String regex2 = "<input[^>]+value\\s*=\\s*([\"']?)([^\"'>\\s]+)\\1";
Pattern pattern2 = Pattern.compile(regex2, Pattern.CASE_INSENSITIVE);
Matcher matcher2 = pattern2.matcher(str);
while(matcher2.find()) {
System.out.println(matcher2.group(2));
}
}
}