输入框限制输入表情

  前些日子写项目,测试提出要求要禁止表情的录入,在UITextField这个代理方法中shouldChangeCharactersInRange,只能够限制键盘上的表情不能录入,但是录入时联想上的表情还是能够录入,所以最终用了下边的方法,但是可能还会有问题。

  究其原因,测试说防止数据库的表被注入什么的,但是我感觉这些活是后台要做的,后台直接拿传入的字符串直接作为数据库的查询条件,肯定会有问题的,但是惹不起测试 ,只能够做了限制了!如果有更好的办法,欢迎指正。

- (void)viewDidLoad {

[super viewDidLoad];

[[NSNotificationCenter defaultCenter]addObserver:self

selector:@selector(textDidChange:)

name:UITextFieldTextDidChangeNotification

object:nil];

}

- (void)textDidChange:(NSNotification*)nf{

UITextField *tf = (UITextField*)nf.object;

NSString *string  = [self filterEmoji:tf.text];

if (string) {

tf.text = string;

}

}

- (NSString*)filterEmoji:(NSString*)text{

NSError *error = nil;

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r\n]" options:NSRegularExpressionUseUnixLineSeparators error:&error];

NSString *modifiedString = [regex stringByReplacingMatchesInString:text

options:0

range:NSMakeRange(0, [text length])

withTemplate:@""];

if (![modifiedString isEqualToString:text]) {

return modifiedString;

}else{

return nil;

}

}

//在此要干掉通知

-(void)dealloc{

[[NSNotificationCenter defaultCenter] removeObserver:self];

}

时间: 07-04

输入框限制输入表情的相关文章

JavaScript控制输入框只能输入非负正整数

1.问题背景 问题:一个输入框,输入的是月份,保证输入的内容只能是非负正整数 2.JavaScript代码 function checkMonth() { $("month").keyup(function(){ var temp = $(this).val(); $(this).val(temp.replace(/ \ D/^0/g,'')); })bind("paste",function(){ var temp = $(this).val(); $(this)

-WEBKIT-USER-SELECT:NONE导致输入框无法输入

原文:http://hicc.me/post/webkit-user-select-none-disabling-text-field.html 最近在webview中写页面的时候发现个别Android机型(Google  Nexus,Android 4.2.2)输入框无法输入(但是键盘可以弹起,所以不是网上所说webView.requestFocus(View.FOCUS_DOWN);的问题),经过试错发现是-webkit-user-select:none;所导致的原因. 后来网上再搜,果然有

JS实现在输入框内输入@时,邮箱账号自动补全

<!DOCTYPE HTML> <html lang="en"> <head> <meta charset="utf-8"/> <title>邮箱自动补全</title> <style type="text/css"> .wrap{width:200px;margin:0 auto;} h1{font-size:36px;text-align:center;lin

显示输入框只能输入2位小数

function checkNum(obj) { obj.value = obj.value.replace(/[^\d.]/g, ""); //清除“数字”和“.”以外的字符 obj.value = obj.value.replace(/^\./g, ""); //验证第一个字符是数字而不是. obj.value = obj.value.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的. obj.value =

input输入框限制输入正整数、小数、字母、文字

有的时候需要限制input的输入格式: 例如,输入大于0的正整数 <input onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}" onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^

关于项目开发中涉及到输入表情的解决方案

通常情况下在后台服务器没有进行专门处理的情况下会返回异常,这时在前端就需要进行相应的处理. 1.限制输入表情    通过一个专门的函数判断输入的文字中是否包含表情 在NSString+Extension的扩展类中加入该类方法 + (BOOL)isContainsTwoEmoji:(NSString *)string { __block BOOL isEomji = NO; [string enumerateSubstringsInRange:NSMakeRange(0, [string leng

转 移动端-webkit-user-select:none导致input/textarea输入框无法输入

移动端webview中写页面的时候发现个别Android机型会导致input.textareat输入框无法输入(键盘可以弹起,不是webView.requestFocus(View.FOCUS_DOWN);的问题) 由于移动端我习惯统一初始化样式: * { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-tap-highlight-color: transpa

H5输入框在输入信息的时候 页面会变形 并且在页面不变形的时候 键盘会遮挡 输入框的解决办法

$(document).ready(function () { $('body').css({'height':$(window).height()})});//这行是解决输入框在输入信息弹出键盘后页面变形 $(function () {//微信内置浏览器浏览H5页面弹出的键盘遮盖文本框的解决办法window.addEventListener("resize", function () {     if (document.activeElement.tagName == "

APPium连接真机输入框中输入的内容与代码中不一致

今天解决了上一个问题,又碰到了一个新的问题. 问题:连接真机输入框中输入的内容与代码中不一致. 描述: 想实现登录页面输入用户名和密码自动登录,可是在输入用户名和密码的框中输入的内容总是与代码中的不一致,初步感觉到应该和输入发有关系,于是把用户名和密码都换成数字可以成功登录,但是真实的用户名很有可能含有字母,所以继续学习实践.把手机默认输入法换成英文的,再运行一次代码,用户名"clinvab001"可以正常输入,但是密码输入又出了问题,在网上各种寻找,几经实践终于找到了解决的办法了,在