关于C#判断是否是数字的正则式
有话要说
今天我同事突然让我帮他看个问题,他说想不通为什么数据库中会有不合法的内容,我都已经用正则过滤了,并且在本地调通了的!
我问他是不是你正则有问题,他说没问题啊,前端和后端的正则是一样的,前端我测了的确是可以过滤的!我帮他查看了正则式的确都是一样的,并且在生产环境中的确也是有过滤作用的!但的确数据库中有不合法的内容(至于是什么内容,咱们往下看 ^-^)
判断目标内容是否为数字
我们来说说,判断是否为数字的正则式,或者说判断手机号码的合法性,下面直接给出网上的一段代码(还是有很多同学都用到了);正则式如下:
var partner = /^(013|014|015|017|018|13|14|15|17|18)\d{9}$/
或者判断几位的数字
var partner2 = /^\d{x}$/
其中的 \d 是判断是否为数字的核心,我们在运用js的时候,的确能给我们正确的结果没错!但是,这就能万无一失的在另一个不同的平台上用么(.NET);有朋友觉得奇怪:难道不是一致的么?
.NET下正则式和JS的正则式是有差异的
是不是,我们直接用代码证明:
private readonly Regex MobilePhone = new Regex(@"^\d{9}$");
bool result = MobilePhone.IsMatch("123456789");
bool result2 = MobilePhone.IsMatch("123456789");
那么result result2分别是true or false?
.
.
.
没错,我同事遇到就是数字的全角和半角差别导致不合法的数据进入了我们的数据库!进而在db那边统计的时候出了问题
有朋友也许会问“既然是这样,前端也会验证啊!”这种问题我就不作答了
这里我给出网上另一种验证方法,可以解决这种不同语言(平台)的正则漏洞
var correct = /^[0-9]/
把核心的\d 换成 0-9这样就没问题了
至于为什么出这样的差异,很遗憾我答不上来! 我依稀记得,在《正则表达式经典实例》这本书中说不同语言下的正则采用的行为原则是不同的
好吧,我也只能给出这种不算答案的答案了
关于C#判断是否是数字的正则式的更多相关文章
- js中对数字进行正则判断
<script type="text/javascript"> function SubmitCk(num) { var reg = /^([a-zA-Z0-9]+[_ ...
- js判断是否为正整数的正则写法 JavaScript正整数正则
判断是否为正整数 JavaScript正则判断一串数字是否为正整数, 首先要明白这几个问题 1:javascript里会把一串数字前边的0自动屏蔽,(我不知道屏蔽这个词用的是否正确) console. ...
- jQuery 判断是否为数字的方法 及 转换数字函数
<script language="javascript"> var t=$("#id").val();//这个就是我们要判断的值了 if(!isN ...
- JS验证正数字,正则的一种正数规则1
JS中有一个验证数字的方法,就是!isNAN.NAN是非数字,!在JS里表示不是的意思,所以这个!isNAN就是判断不是非数字,也就是是数字.验证某个字符串是否是数字格式是:!isNaN(字符串)经过 ...
- js判断只能输入数字和只能输入
JS判断只能是数字和小数点 1.文本框只能输入数字代码(小数点也不能输入) <input onkeyup="this.value=this.value.replace(/\D/g,'' ...
- python学习——如何判断输入是数字
笨办法学python第35节 该节主要是讲分支与函数,主要遇到的问题是python中如何判断输入是数字. 首先原代码如下: from sys import exit def gold_room(): ...
- java integer对象判断两个数字是否相等
java integer对象判断两个数字是否相等,不一定对 问题发生的背景:javaweb的项目,起先,因为在java中实体类中的int类型在对象初始化之后会给int类型的数据默认赋值为0,这样在很多 ...
- 用while判断输入的数字是否回文数
/* Name:用while判断输入的数字是否回文数 Copyright: By.不懂网络 Author: Yangbin Date:2014年2月18日 04:29:07 Description:用 ...
- JS判断只能是数字和小数点
JS判断只能是数字和小数点 1.文本框只能输入数字代码(小数点也不能输入) <input onkeyup="this.value=this.value.replace(/\D/g,'' ...
随机推荐
- VS未能正确加载 ”Microsoft.VisualStudio.Editor.Implementation.EditorPackate“包错误解决方法
很久没用VS了,打开后出现未能正确加载 ”Microsoft.VisualStudio.Editor.Implementation.EditorPackate“包的错误,经过一番上网查阅错误得以解决. ...
- 修改ActiveReports验证文字“给不能为 null 的参数指定一个 null 值”
转:http://gcdn.gcpowertools.com.cn/showtopic-13759.html ActiveReports官方网站:http://www.gcpowertools.com ...
- Python3.5 学习十一
关于消息队列 PY 中应用程序里对于消息队列的使用: 1 threading QUEUE 2 进程QUEUE 父进程.父进程下的子进程间进行交互 RabbitMQ 消息队列 :用于应用程序之间,可跨平 ...
- 网络编程——http协议
1.TCP/IP 基本知识 一.概念 TCP/IP协议是一个协议的集合,它是由众多的互联网相关联的协议集合的总称.如图 二.TCP/IP分层管理 TCP/IP模型分为5层:应用层,传输层,网络层,数据 ...
- ng的点滴记录
1,directive http://damoqiongqiu.iteye.com/blog/1917971/ 2,constructor https://segmentfault.com/q/10 ...
- 使用browserSync自动刷新
本篇主要是以 http://www.imooc.com/article/14759 为参考来写的: 已经整理到github上:https://github.com/Macaulish/gulp-Bro ...
- SpringBoot学习笔记(一)基础
Spring Boot理念 习惯优于配置.使用Spring Boot很容易创建一个独立运行(运行jar,内嵌servlet容器).准生产级别的基于Spring框架的项目,使用SpringBoot可以不 ...
- iOS下载图片失败
一.具体问题 开发的过程中,发现某个界面部分图片的显示出现了问题只显示占位图片,取出图片的url在浏览器却是能打开的,各种尝试甚至找同行的朋友帮忙在他们项目里展示都会存在问题,最终发现通过第三方框架S ...
- 堆排序(最大堆)的理解和实现(Java)
堆的定义 堆是具有下列性质的完全二叉树:每个节点的值都大于或等于其左右孩子节点的值,称为大顶堆:或者每个节点的值都小于或等于其左右孩子的值,称为小顶堆.如下图举例: 通过堆的定义可知,根节点一定是对中 ...
- <context:component-scan>详解 转发 https://www.cnblogs.com/fightingcoding/p/component-scan.html
<context:component-scan>详解 默认情况下,<context:component-scan>查找使用构造型(stereotype)注解所标注的类,如@ ...