求教一简单正则?回帖给分!

码无边 2012-02-21 03:48:56
电话号码字段(tel varchar类型)存储3个号码,并且是以分号结尾,类似:
0510-12323475,0781-26354589,021-25698746 (同时存储3个号码)
0521-25698745,, (有可能只存储1个电话号码)
0521-25698745,021-25698475, (有可能只存储2个电话号码)
现在用正则判断电话号码输入是否正常,注意电话区号。
RegTel=/^(\d{3,4}-\d{7,8}(-\d{1,4})?)?$/这是我写的,但是不行。
...全文
231 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunyangyangphp 2012-03-08
  • 打赏
  • 举报
回复
'/,?\d{4}-\d+,?/'
xuzuning 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zy205817 的回复:]
老大,我只要$pattern的正则。但是你的$pattern不行。[/Quote]
那就奇了怪了
$ar = array(
'0510-12323475,0781-26354589,021-25698746',
'0521-25698745,,',
'0521-25698745,021-25698475',
'0317-88641,ttttttt',
);

$pattern = '/,(?:\d{3,}-\d{7,8})/';

foreach($ar as $v) {
echo $v . ' ' . (preg_match($pattern, ",$v") ? '正确' : '有错') , PHP_EOL;
}
0510-12323475,0781-26354589,021-25698746 正确
0521-25698745,, 正确
0521-25698745,021-25698475 正确
0317-88641,ttttttt 有错
cyr11 2012-02-22
  • 打赏
  • 举报
回复
都是高手
码无边 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 foolbirdflyfirst 的回复:]

这样?
http://jsbin.com/akoser/20/edit
最好说清楚哪个文本框里面格式是正确的,那些个文本框格式是不正确的。
主要是你那个逗号,不管输入多少个电话号码,都得保证有2个逗号?
[/Quote]是的。
foolbirdflyfirst 2012-02-22
  • 打赏
  • 举报
回复
这样?
http://jsbin.com/akoser/20/edit
最好说清楚哪个文本框里面格式是正确的,那些个文本框格式是不正确的。
主要是你那个逗号,不管输入多少个电话号码,都得保证有2个逗号?
码无边 2012-02-22
  • 打赏
  • 举报
回复
http://jsbin.com/akoser/13/edit
好像保存不启效果。
码无边 2012-02-22
  • 打赏
  • 举报
回复
http://jsbin.com/akoser/11/edit这是地址
码无边 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 foolbirdflyfirst 的回复:]

引用 23 楼 zy205817 的回复:

引用 19 楼 foolbirdflyfirst 的回复:

你打开这个页面
http://jsbin.com/akoser/edit#html,live
自己编辑修改textarea里面的内容,说明为什么你的正则不行,我帮你把代码缩减了。
我添加了几个,还是不能完全搞定。

.......
你添加了什么?没看到啊,那个页面,你可……
[/Quote]你那工具不错啊,我在看看
foolbirdflyfirst 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 zy205817 的回复:]

引用 19 楼 foolbirdflyfirst 的回复:

你打开这个页面
http://jsbin.com/akoser/edit#html,live
自己编辑修改textarea里面的内容,说明为什么你的正则不行,我帮你把代码缩减了。
我添加了几个,还是不能完全搞定。
[/Quote]
.......
你添加了什么?没看到啊,那个页面,你可以编辑代码,然后Save,这样就可以看到你改了什么,遇到什么问题,这样方便交流,get it?
码无边 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 foolbirdflyfirst 的回复:]

你打开这个页面
http://jsbin.com/akoser/edit#html,live
自己编辑修改textarea里面的内容,说明为什么你的正则不行,我帮你把代码缩减了。
[/Quote]我添加了几个,还是不能完全搞定。
码无边 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 xuzuning 的回复:]

js啊!
在 php 版面只玩 php
[/Quote]那是,这是老大的天下。呵呵
xuzuning 2012-02-22
  • 打赏
  • 举报
回复
js啊!
在 php 版面只玩 php
码无边 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 foolbirdflyfirst 的回复:]

你打开这个页面
http://jsbin.com/akoser/edit#html,live
自己编辑修改textarea里面的内容,说明为什么你的正则不行,我帮你把代码缩减了。
[/Quote]我要测试的数据都可以检测,关键是填入字段的数据不是很规范。我将之前自己写的正则:/^(\d{3,4}-\d{7,8}(-\d{1,4})?)?$/和yangball(田心杨)写的正则($pattern = '/,?\d{3,}-\d+,?/';)一整合======>得到了:/,(\d{3,4}-\d{7,8}(-\d{1,4})?)?$,?/恰恰都满足我上面写的几种情况。这也太坑爹了吧!
foolbirdflyfirst 2012-02-22
  • 打赏
  • 举报
回复
你打开这个页面
http://jsbin.com/akoser/edit#html,live
自己编辑修改textarea里面的内容,说明为什么你的正则不行,我帮你把代码缩减了。
码无边 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xuzuning 的回复:]

那么你认为我示例的结果正确吗?
[/Quote]结果是正确的。
码无边 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 foolbirdflyfirst 的回复:]

贴出文本实例,匹配什么,不匹配什么,画红画蓝描述清楚。还有你求的是javascript正则还是php正则,都说清楚。
[/Quote]
<script type="text/javascript">
$(document).ready(function(){
Check();
});
var Check = function(){
var RegPcode=/^[1-9]\d{5}(?!\d)$/,RegEmail=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/,RegTel=/,(\d{3,4}-\d{7,8}(-\d{1,4})?)?$,?/,RegFax=/^((\d{3,4}-\d{7,8}(-\d{1,4})?)(;\d{3,4}-\d{7,8}(-\d{1,4})?)*(;)?)?$/,RegFPcode=/^[1-9]\d{5}(?!\d)$/,RegMobile=/^(\d{11})?$/,Cnt=0;
var Pcode = $("input.RegPcode");
var Email = $("input.RegEmail");
var Tel = $("input.RegTel");
var Fax = $("input.RegFax");
var FPcode= $("input.RegFPcode")
var Mobile = $("input.RegMobile");
var email = $("input.Regemail");
var Ratch = function(b){
return b.replace(";",";").replace(":",":").replace("-","-");
};
var CheckMatch = function(a,b){
var _val=b.val();
if(_val==""){
b.removeClass("b2");
return;
}
var _tmp=eval(a);
if (!_tmp.test(b.val())){
b.addClass("b2");
Cnt=1;
}
else
b.removeClass("b2");

};
Pcode.each(function(){
CheckMatch("RegPcode",$(this));
$(this).blur(function(){
CheckMatch("RegPcode",$(this));
});
});
Email.each(function(){
CheckMatch("RegEmail",$(this));
$(this).blur(function(){
CheckMatch("RegEmail",$(this));
});
});
Tel.each(function(){
CheckMatch("RegTel",$(this));
$(this).blur(function(){
CheckMatch("RegTel",$(this));
});
});
Fax.each(function(){
CheckMatch("RegFax",$(this));
$(this).blur(function(){
CheckMatch("RegFax",$(this));
});
});
FPcode.each(function(){
CheckMatch("RegFPcode",$(this));
$(this).blur(function(){
CheckMatch("RegFPcode",$(this));
});
});
Mobile.each(function(){
CheckMatch("RegMobile",$(this));
$(this).blur(function(){
CheckMatch("RegMobile",$(this));
});
});
email.each(function(){
CheckMatch("RegEmail",$(this));
$(this).blur(function(){
CheckMatch("RegEmail",$(this));
});
});
if(Cnt != 0){alert("CRM友情提示:\n\n所有边框为红色的位置,都表示格式不正确!");return false;}
return true;
};
</script>
这是js代码。
foolbirdflyfirst 2012-02-22
  • 打赏
  • 举报
回复
贴出文本实例,匹配什么,不匹配什么,画红画蓝描述清楚。还有你求的是javascript正则还是php正则,都说清楚。
xuzuning 2012-02-22
  • 打赏
  • 举报
回复
那么你认为我示例的结果正确吗?
码无边 2012-02-22
  • 打赏
  • 举报
回复
我是用这样的正则。RegTel=/,(?:\d{3,}-\d{7,8})/,但是还是不行的。
码无边 2012-02-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xuzuning 的回复:]

PHP code
$ar = array(
'0510-12323475,0781-26354589,021-25698746',
'0521-25698745,,',
'0521-25698745,021-25698475',
'0317-88641,ttttttt',
);

$pattern = '/(?:\d{3,}-\d+,|,){3}/';

foreach($ar as ……
[/Quote]按照这样的需求写正则。0510-12323475,0781-26354589,021-25698746 (同时存储3个号码)
0521-25698745,, (有可能只存储1个电话号码)
0521-25698745,021-25698475, (有可能只存储2个电话号码)
现在用正则判断电话号码输入是否正常,注意电话区号和-后面有可能是7位或者8位。
加载更多回复(9)

格与英文同时存在 来源:正则问题请指教啊! 匹配英文以及空格,要求必须既有英文字母又有空格。 这个思路和上面的差不多,只要把数字改成空格就可以了。正则如下: /^(([a-z]+/s+)|(/s+[a-z]+))[a-z/s]*$/i 英文开头加空格,或者是空格开头加英文,后面可以是英文或者空格。测试代码如下:

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧