关于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,'' ...
随机推荐
- qt linux下配置安装
linux版本: qt卸载: 1. 先找到qt的安装位置: 2.然后执行其下面的文件MaintenanceTool: 3. 然后会出现图形界面: 卸载完成. 安装qt 下载地址: https://ww ...
- Mac 忘记密码
今天早上到公司发现电脑被动过,马上查看浏览器的历史记录,果然发现了一些痕迹.虽然是公司的电脑,但是随便被人翻看,还是很不爽! 于是马上把原来公司给的默认密码改掉. 不料,中午出去吃了个饭,回来就把密码 ...
- 使用hex编码绕过主机卫士IIS版本继续注入
本文作者:非主流 测试文件的源码如下: 我们先直接加上单引号试试: http://192.168.0.20/conn.asp?id=1%27 很好,没有报错.那我们继续,and 1=1 和and 1= ...
- 北大POJ题库使用指南
原文地址:北大POJ题库使用指南 北大ACM题分类主流算法: 1.搜索 //回溯 2.DP(动态规划)//记忆化搜索 3.贪心 4.图论 //最短路径.最小生成树.网络流 5.数论 //组合数学(排列 ...
- zookeeper基本操作
理解Zookeeper的一种方法是将他视为一个提供高可用性的文件系统.它没有文件和目录,但是有一个统一概念的节点,叫做znode,作为数据以及其他znode的容器.znode来自于一个层次级的命名空间 ...
- debug 工具
git blame 查看某个文件的修改记录  二分查找确定 bug 来源 启动  输入 git bisect start,启动流程 输入 git bisect bad,标记当前是错误的 输入 gi ...
- git命令上传项目到码云总结
码云上传项目git命令总结: git clone https://git.oschina.net/xh-lxx/xh-lxx.oschina.io.git 进入到克隆下来的文件夹,然后操作git命令 ...
- mysql中授权其它电脑链接指令。
grant all privileges on yourDatabaseName to 'user'@'databaseIPAddress' identified by 'password' with ...
- 【xsy1058】 单词 乱搞
题目大意:给你$n$个长度为$m$的字符串,字符集仅为{x,y,z}三个字符,定义两个字符串$(s_i,s_j)$的相似度为$\sum_{k=1}^{m} [s_i[k]==s_j[k]]$. 从$0 ...
- #阿里云#云服务器搭建git服务器
前言:大家都知道,git是非常方便的版本控制工具,目前网上有很多免费的git仓库可以给我们使用,但是有些时候我们并不放心将我们的项目寄放在别人的服务器上,这个时候就需要自己搭建一个git服务器,十分的 ...