正则表达式总结:
前端输出的字符串:var str="/^[0-9]*$/" ,若用对象的话 直接eval(str) 就ok
因为正则test貌似只能对象才可以, 个人测试的,
伪代码如下:
var regularExp=/^[0-9]*$/;
if(regularExp.test(column_form_name_value)!=true){} 这样就ok
var regularExp="/^[0-9]*$/";
if(regularExp.test(column_form_name_value)!=true){} 这样就存在问题,需要把正则表达式转对象才可以。
又搞了2个小时的心得================哎 ==============fuck=============长点记性吧
一、伪代码对比
经典,错误伪代码:
var zz=returnstr.split(",")[1];
var regularExp=new RegExp(zz);
var flg=regularExp.test(column_form_name_value);
经典,正确伪代码:
var zz=returnstr.split(",")[1];
var regularExp=new RegExp(eval(zz));
var flg=regularExp.test(column_form_name_value);
二、查找分析原因:
数据库存放的是 /\S/
前端通过console.log输出的也是/\S/
但是regularExp=new RegExp(zz);这样写,的test怎么就是判断不正确呢,因为zz输出的是字符串,
但是若用字符串的方式判断是否是字符串,却判断不了, 因为里面含有转义字符串,
为什么直接放到RegExp这里面可以(new RegExp(/\S/)),因为符合正则表达式规则,是正则表达式的对象。
解决这种问题。需要转变成对象就可以了。更改成这样的regularExp=new RegExp(eval(zz));就行了。