贴出的正则表达式很多都存在问题的。
比如:匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求 我认为这个表达式更糟,而且还有错误 [a-zA-z] 这里就有一个明显的错误。
再者难道“aaqaaaa://”也是 URL 么?
比如:匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求 我认为这个表达式更糟,而且还有错误 [a-zA-z] 这里就有一个明显的错误。
再者难道“aaqaaaa://”也是 URL 么?
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力 这个表达式严重存在问题:\S*? 采用可为空的懒惰量词,可能导致该部分无匹配,直接匹配到后面的 [^>]
我在 UltraEdit 下测 ,没有啊!
下面这篇介绍正则表达式的文章挺不错的,有兴趣的可以看看
http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm
function IsHalfNum(object,minSize,maxSize) {
var str= "^[0-9]{"+minSize+","+maxSize+"}$";
var myReg = new RegExp(str);
return (myReg.test(object.value));
} // 匹配字符长度function IsAllChar(object,minSize,maxSize){
var str=(object.value).replace(/[^\x00-\xFF]/g,"aa");
return (str.length>=minSize && str.length<=maxSize);
}//匹配半角的英数字
function IsHalfEnNum(object,minSize,maxSize) {
var str= "^[a-zA-Z0-9]{"+minSize+","+maxSize+"}$";
var myReg = new RegExp(str);
return (myReg.test(object.value));
}//匹配Email地址的
function IsEmail(object,minSize,maxSize) { if(object.value.length<minSize || object.value.length>maxSize)
{
return false;
}
var str= "[-\w.]+@[-\w.]+\.[-\w]+";
var myReg = new RegExp(str);
return (myReg.test(object.value));
}
...还有可多了,
public static void main(String[] args) {
String[] str = { "1", "1", "1" ,"1"};
String[] str2 = { "2", "2", "2" ,"0"};
String pattern = getPattern(str, str2);
System.out.println(pattern);
for (int i = 1000; i <= 10000; i++) {
System.out.print(Pattern.matches(pattern, String.valueOf(i)));
if (i == 1110 || i == 2220) {
System.out.println();
}
}
} public static String getPattern(String[] startNum, String[] endNum) {
StringBuffer buffer = new StringBuffer();
String[] start = getNum(startNum);
String[] end = getNum(endNum);
int flag = Integer.parseInt(startNum[0])-Integer.parseInt(endNum[0]);
// 234-456 [3-3][0-9]{2} 2[4-9][0-9]{1} 23[4-9] 4[0-4][0-9] 45[0-6]
for (int i = 0; i < start.length; i++) {
if (i == start.length - 1) {
buffer.append(start[0]).append("([").append(startNum[i])
.append("-9]").append(")|");
} else if (i == 0&&flag>1) {
buffer.append("([").append(Integer.parseInt(startNum[i]) + 1)
.append("-").append(Integer.parseInt(endNum[i]) - 1)
.append("][0-9]").append("{").append(
(start.length - i - 1)).append("})|");
} else if(i==0&&flag<=1){
//这里不能做任何操作,但是必须存在
}else{
buffer.append(start[start.length - i - 1]).append("([").append(
Integer.parseInt(startNum[i]) + 1).append("-9]").append(
"[0-9]").append("{").append((start.length - i - 1))
.append("})|");
}
}
for (int i = 1; i < end.length; i++) {
if (i == end.length - 1) {
buffer.append(end[0]).append("([0-").append(endNum[i]).append(
"]").append(")|");
} else {
buffer.append(end[endNum.length - i - 1]).append("([0-")
.append(Integer.parseInt(endNum[i]) - 1).append("]")
.append("[0-9]").append("{").append(
(endNum.length - i - 1)).append("})|");
} }
return buffer.toString().substring(0, buffer.toString().length() - 1);
} private static String[] getNum(String[] startNum) {
String[] start = new String[startNum.length];
for (int i = 0; i < startNum.length; i++) {
StringBuffer buf = new StringBuffer();
for (int j = 0; j < startNum.length - i - 1; j++) {
buf.append(startNum[j]);
}
start[i] = buf.toString();
}
return start;
}
}
public static void main(String[] args) {
String[] str = { "1", "9", "9" ,"2"};
String[] str2 = { "3", "0", "2" ,"0"};
String pattern = getPattern(str, str2);
System.out.println(pattern);
for (int i = 1000; i <= 10000; i++) {
System.out.print(Pattern.matches(pattern, String.valueOf(i)));
if (i == 1991 || i == 3020) {
System.out.println();
}
}
} public static String getPattern(String[] startNum, String[] endNum) {
StringBuffer buffer = new StringBuffer();
String[] start = getNum(startNum);
String[] end = getNum(endNum);
int flag = Integer.parseInt(endNum[0])-Integer.parseInt(startNum[0]);
// 234-456 [3-3][0-9]{2} 2[4-9][0-9]{1} 23[4-9] 4[0-4][0-9] 45[0-6]
for (int i = 0; i < start.length; i++) {
int flag1 = 9-Integer.parseInt(startNum[i]);
if (i == start.length - 1) {
buffer.append(start[0]).append("([").append(startNum[i])
.append("-9]").append(")|");
} else if (i == 0) {
if(flag>1){
buffer.append("([").append(Integer.parseInt(startNum[i]) + 1)
.append("-").append(Integer.parseInt(endNum[i]) - 1)
.append("][0-9]").append("{").append(
(start.length - i - 1)).append("})|");
}
}else{
if(flag1>1){
buffer.append(start[start.length - i - 1]).append("([").append(
Integer.parseInt(startNum[i]) + 1).append("-9]").append(
"[0-9]").append("{").append((start.length - i - 1))
.append("})|");
}
}
}
for (int i = 1; i < end.length; i++) {
int flag2 = Integer.parseInt(endNum[i])-0;
if (i == end.length - 1) {
buffer.append(end[0]).append("([0-").append(endNum[i]).append(
"]").append(")|");
} else {
if(flag2>1){
buffer.append(end[endNum.length - i - 1]).append("([0-")
.append(Integer.parseInt(endNum[i]) - 1).append("]")
.append("[0-9]").append("{").append(
(endNum.length - i - 1)).append("})|");
}
}
}
return buffer.toString().substring(0, buffer.toString().length() - 1);
} private static String[] getNum(String[] startNum) {
String[] start = new String[startNum.length];
for (int i = 0; i < startNum.length; i++) {
StringBuffer buf = new StringBuffer();
for (int j = 0; j < startNum.length - i - 1; j++) {
buf.append(startNum[j]);
}
start[i] = buf.toString();
}
return start;
}
}
<html>
<head>
<title>动态增删表格行</title>
<script language="JavaScript">
<!--
//author: Robin
//email: [email protected]
var rowIndex=0;
function addLine(obj){
var objSourceRow=obj.parentNode.parentNode;
var objTable=obj.parentNode.parentNode.parentNode.parentNode;
if(obj.value=='增加'){
rowIndex++;
var objRow=objTable.insertRow(rowIndex);
var objCell;
objCell=objRow.insertCell(0);
objCell.innerHTML=" ";
objCell=objRow.insertCell(1);
objCell.innerHTML=objSourceRow.cells[1].innerHTML;
objCell=objRow.insertCell(2);
objCell.innerHTML=objSourceRow.cells[2].innerHTML.replace(/增加/,'删除');
}
else{
objTable.lastChild.removeChild(objSourceRow);
rowIndex--;
}
}
function removeLine(){
}
//-->
</script>
</head>
<body bgcolor="#ffffff">
<form name="form1" method="post">
<table width="400" border="0">
<tr>
<td>基本信息</td>
<td><select name="select">
<option value="" selected>选择</option>
<option value="1">第一</option>
<option value="2">第二</option>
</select></td>
<td><input name="basicinfo" type="text" id="basicinfo">
<input name="add" type="button" id="add" value="增加" onClick="addLine(this)"></td>
</tr>
<tr>
<td>其它信息</td>
<td> </td>
<td><span><input type="text" name="textfield"><span></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
</form>
</body>
</html>
^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$ 其中:
^ 与字符串开始的地方匹配
(?!_) 不能以_开头
(?!.*?_$) 不能以_结尾
[a-zA-Z0-9_\u4e00-\u9fa5]+ 至少一个汉字、数字、字母、下划线
$ 与字符串结束的地方匹配放在程序里前面加@,否则需要\\进行转义 @"^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$"
(或者:@"^(?!_)\w*(?<!_)$" 或者 @" ^[\u4E00-\u9FA50-9a-zA-Z_]+$ " )2、只含有汉字、数字、字母、下划线,下划线位置不限:
^[a-zA-Z0-9_\u4e00-\u9fa5]+$3、由数字、26个英文字母或者下划线组成的字符串
^\w+$4、2~4个汉字
@"^[\u4E00-\u9FA5]{2,4}$"; 5、
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$用:(Abc)+ 来分析: XYZAbcAbcAbcXYZAbcAb
XYZAbcAbcAbcXYZAbcAb
6、
[^\u4E00-\u9FA50-9a-zA-Z_]
34555#5' -->34555#5'[\u4E00-\u9FA50-9a-zA-Z_] eiieng_89_ ---> eiieng_89_
_';'eiieng_88&*9_ --> _';'eiieng_88&*9_
_';'eiieng_88_&*9_ --> _';'eiieng_88_&*9_public bool RegexName(string str)
{
bool flag=Regex.IsMatch(str,@"^[a-zA-Z0-9_\u4e00-\u9fa5]+$");
return flag;
} Regex reg=new Regex("^[a-zA-Z_0-9]+$");
if(reg.IsMatch(s))
{
\\符合规则
}
else
{
\\存在非法字符
}
0 0 0
(请您对文章做出评价)