关于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,'' ...
随机推荐
- westrac server security configure user info
security userkey:westracpass:Set#@!123
- MongoDB VUE的下载及安装
下载: mongo vue官网地址:http://www.mongovue.com/ 安装: 很简单,注意的是:在提示buy 和 OK 的时候点击OK即可: 连接: 默认连接(无用户名密码): 在启 ...
- day 94 RestFramework序列化组件与视图view
一 .复习 1. CBV流程 class BookView(View): def get(): pass def post(): pass #url(r'^books/', views.BookVie ...
- 【2019年OCP新题】OCP题库更新出现大量新题-10
10.Which two statements are true about SQL*Loader Express Mode in an Oracle 12c database? A) It can ...
- Codeforces Round #426 (Div. 2)A B C题+赛后小结
最近比赛有点多,可是好像每场比赛都是被虐,单纯磨砺心态的作用.最近讲的内容也有点多,即便是点到为止很浅显的版块,刷了专题之后的状态还是~"咦,能做,可是并没有把握能A啊".每场网络 ...
- PHP中使用CURL模拟登录并获取数据实例
cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信 ...
- POJ 2390
import java.util.*; public class Main { public static void main(String args[]){ double interest; Sca ...
- AngularJS常用Directives实例
在第一篇 认识AngularJS 中,我们已经基本了解了AngularJS,对Directive也有了一定了解,本章我们将继续介绍Directive,对其有一个更深入的了解和掌握. 常用的Direct ...
- javascript数据结构与算法--二叉树(插入节点、生成二叉树)
javascript数据结构与算法-- 插入节点.生成二叉树 二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 /* *二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 * * ...
- express中间件原理 && 实现
一.什么是express中间件? 什么是express中间件呢? 我们肯定都听说过这个词,并且,如果你用过express,那么你就一定用过express中间件,如下: var express = re ...