有如下正则表达式:
成都创新互联是专业的龙口网站建设公司,龙口接单;提供成都做网站、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行龙口网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间): ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$
使用如上正则表达式验证的时候发现没有达到自己想要的效果,那是因为上面的 \d 会被当成转义字符来对待,XCode警告 Unknown escape sequence '\d' ,如下:
最后po如上字符串的时候发现po出来的是 ^(?=.*d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$ ,少了 \ 正因为如此,所以正则的校验就不成功了。
解决办法,就是在 \d 前面再加个 \ ,不让他转义,如下:
这样正则的校验就正确了。
1 汉字或者一般的转特殊字符转义问题, 可以直接用:
2 我在开发中还遇到 这些字符( ! * ' ( ) ; :@ = + $ , / ? % # [ ] )不能正常转化 .就会造成访问地址链接包含非法字符问题
解决办法:
在本类中新增一个下面的方法, 转义的时候调用这个方法来转义, 就解决了
这个方法的目的就是 对这写不能正常转义的字符,进行判断, 并加以正确的转义操作!
转义字符是一种特殊的字符常量。转义字符以反斜线"\"开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。例如,在前面各例题printf函数的格式串中用到的“\n”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。
常用的转义字符及其含义
转义字符 转义字符的意义
\n 回车换行
\t 横向跳到下一制表位置
\v 竖向跳格
\b 退格
\r 回车
\f 走纸换页
\\ 反斜线符"\"
\' 单引号符
\a 鸣铃
\ddd 1~3位八进制数所代表的字符
\xhh 1~2位十六进制数所代表的字符
广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。表2.2中的\ddd和\xhh正是为此而提出的。ddd和hh分别为八进制和十六进制的ASCII代码。如\101表示字?quot;A" ,\102表示字母"B",\134表示反斜线,\XOA表示换行等.
..\没这样转义的。。
根目录是:/;
..的意思是父目录,
比如/a/b下有文件b.asp,那么b.asp中的../a.gif直接调用文件夹a中的a.gif
也可以用/a.gif
json作为ajax常用的一种数据类型,经常使用。但如果字段中出现换行符如何处理?
去掉显然不合适。有些字段本来就有换行符,如何能去掉?
测试一下json类的处理,也没有发现。想不到最终的处理确实如此简单:
后台代码把换行符\r\n替换为\\r\\n,前台代码js收到的字符就是\r\n
public static string ConvertFromListTojsonT(IListT list, int total, string columnInfos) where T : class
{
string[] cols = columnInfos.Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries);
StringBuilder sb = new StringBuilder(300);
sb.Append("{\"total\":");
sb.Append(total);
sb.Append(",\"rows\":");
sb.Append("[");
foreach (T t in list)
{
sb.Append("{");
foreach (string col in cols)
{
string name = "\"{0}\":\"{1}\",";
string value = getValueT(t, col);
value = value.Replace("\r\n", "\\r\\n");
sb.Append(string.Format(name, col, value));
}
if (cols.Length 0)
{
int length = sb.Length;
sb.Remove(length - 1, 1);
}
sb.Append("},");
}
if (list.Count 0)
{
int length2 = sb.Length;
sb.Remove(length2 - 1, 1);
}
sb.Append("]");
sb.Append("}");
return sb.ToString();
}
private static string getValueT(T t, string pname) where T : class
{
Type type = t.GetType();
PropertyInfo pinfo = type.GetProperty(pname);
if (pinfo != null)
{
object v = pinfo.GetValue(t, null);
return v != null ? v.ToString() : "";
}
else
{
throw new Exception("不存在属性" + pname);
}
}
\n是换行,英文是New line,表示使光标到行首:在Windows 中表示换行且回到下一行的最开始位置。相当于Mac OS 里的 \r 的效果。在Linux、unix 中只表示换行,但不会回到下一行的开始位置。
\r是回车,英文是Carriage return,表示使光标下移一格:在Linux、unix 中表示返回到当行的最开始位置。在Mac OS 中表示换行且返回到下一行的最开始位置,相当于Windows 里的 \n 的效果。
具体例子如下:
Eclipse里运行结果如下:
扩展资料:
使用转义字符时需要注意以下问题:
一、转义字符中只能使用小写字母,每个转义字符只能看作一个字符。
二、\v垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。
三、在C程序中,使用不可打印字符时,通常用转义字符表示。
四、转义字符’\0’表示空字符NULL,它的值是0。而字符'0'的ASCII码值是48。因此,空字符’\0’不是字符0。另外,空字符不等于空格字符,空格字符的ASCII码值为32而不是0。编程序时,读者应当区别清楚。
五、 如果反斜线之后的字符和它不构成转义字符,则’\’不起转义作用将被忽略。
六、转义字符也可以出现在字符串中,但只作为一个字符看待。
前言:根据需求,我将一个数组类型(每一个数据都是字典类型)的数据转化为json字符串的形式传给后台。我在需要的地方再请求下来这个数据。结果发现请求下来的数据被转义处理了,引号被转义成"。
1.传给后台的json字符串。
NSMutableArray *conArr = [[NSMutableArray alloc] initWithCapacity:0];
for (DynmaticModel*model in self .dataArray)
{
if (model.content model.content.length0) {
NSDictionary*dic =@{@"type":model.type,@"content":model.content};
[conArraddObject:dic];
}
}
NSData *priceDta = [NSJSONSerialization dataWithJSONObject:conArr options:kNilOptions error: nil ];
NSString *priceJson = [[NSString alloc] initWithData:priceDta encoding:NSUTF8StringEncoding];
传给后台的priceJson字符串打印如下:
priceJson = [{"type":"1","content":"啦啦啦1"},{"type":"2","content":""},{"type":"1","content":"啦啦啦2"}]
2.上传成功后从后台请求下来的字符串如下:
[{"type":"1","content":"啦啦啦1"},{"type":"2","content":"http:\/\/fengwojiancai.oss-cn-beijing.aliyuncs.com\/ios\/20200908151508\/2020090815150802.png"},{"type":"1","content":"啦啦啦2"}]
3.如何处理:
(1)将字符串中的"用引号替换
NSString *str = [ text stringByReplacingOccurrencesOfString:@""" withString:@"\""];
这个str就是你传上去的json字符串。
(2)将json转化为数组
NSData *JSONData = [str dataUsingEncoding:NSUTF8StringEncoding];
NSError*error = nil ;
NSArray * arr = [NSJSONSerialization JSONObjectWithData:JSONData options:NSJSONReadingAllowFragments error:error];
for (NSDictionary *dic in arr) {
NSLog(@"dic = %@",dic);
}
这样就ok了!