如何使用java和javascript进行特殊字符验证
How to make a special characters validation using java and javascript
我有一个web应用程序。在客户表单中,我做了一个空的验证,但现在我必须测试该值是否有一个特殊字符,比如:ÁÉëÍ。。。。。。
这是.java空验证:
private void testFields(String name) {
if (applicationField == null) {
LOG.error("The request is invalid");
}
try {
Field f = applicationField.class.getDeclaredField(name);
f.setAccessible(true);
Object value = f.get(applicationField);
boolean emp = false;
if (value instanceof String) {
String strVal = (String) value;
if (StringUtils.isEmpty(strVal)) {
emp = true;
}
} else if (value == null) {
emp = true;
}
if (emp) {
addMissingField(name);
}
} catch (Exception e) {
LOG.error("Failed to validate the field: " + name, e);
}
}
private void addMissingField(String name){
if (StringUtils.isEmpty(missingFields)) {
missingFields = name;
} else {
missingFields += " " + name;
}
}
在.jsp中,我在提交按钮中这样做:
$("#submit")
.button()
.click(function(event) {
event.preventDefault();
var submitButton = $(this);
submitButton.button("disable");
$("input:text").each(function(idx,elem){
$(elem).val($(elem).val().toUpperCase());
});
var form = $("#customerForm");
var action = form.attr('action');
var queryString = form.serialize();
console.log(notifier);
var taskId = notifier.start("Processing Request");
$.ajax({
method: "post",
url: action,
data: queryString,
statusCode: {
201: function() {
window.location.replace(".........");
}
}
}).always(function(data){
notifier.done(taskId);
submitButton.button("enable");
}).done(function(data){
if(data.missingFields){
messageDialog("Sorry, Missing required fields to register the application", true);
markMissingFields(data.missingFields);
console.log("This is the missing Fields: " + data.missingFields);
}
}).fail(function(data){
messageDialog("There was an error processing the request", true);
});
});
因此,空验证非常有效。但有时用户会插入像MÖDRIC、JHÖN或CÁRLOS这样的数据,这会在数据库的差异过程中产生问题。
我想知道如果值为空或同时有特殊字符,我该如何包含特殊字符验证测试。
因此,我需要一种在.java或.jsp.中实现这一点的好方法
在javascript中,您可以使用正则表达式:
var str = "ábcde";
var str2 = "abcd";
var patt = new RegExp("[^a-zA-Z0-9'-''/(),_'s]+")
var res = patt.test(str);
patt.test(str); //true
patt.test(str2); //false
尝试
var charMap = {
"á": "a",
"à": "a",
"â": "a",
"á": "a",
"é": "e",
"è": "e",
"ê": "e",
"ë": "e",
"ï": "i",
"î": "i",
"ô": "o",
"ö": "o",
"û": "u",
"ù": "u"
};
var str = "MÖDRIC";
var normalize = function normalize(item) {
var res = $.map(charMap, function(val, key) {
return $.inArray(key.toUpperCase(), item.split("")) !== -1
? item.replace(key.toUpperCase(), val.toUpperCase()) : null
})[0];
return res.length ? res : item
};
console.log(normalize(str), normalize("JHÖN"), normalize("CÁRLOS"));
// usage within `js` at OP
$("input:text").each(function(idx, elem){
$(elem).val(normalize(elem.value));
});
jsfiddlehttp://jsfiddle.net/guest271314/m6d0du7z/
另请参阅如何使匹配器忽略变音符号-JQUERY
var charMap = {
"á": "a",
"à": "a",
"â": "a",
"á": "a",
"é": "e",
"è": "e",
"ê": "e",
"ë": "e",
"ï": "i",
"î": "i",
"ô": "o",
"ö": "o",
"û": "u",
"ù": "u"
};
var str = "MÖDRIC";
var normalize = function normalize(item) {
var res = $.map(charMap, function(val, key) {
return $.inArray(key.toUpperCase(), item.split("")) !== -1
? item.replace(key.toUpperCase(), val.toUpperCase()) : null
})[0];
return res.length ? res : item
};
console.log(normalize(str), normalize("JHÖN"), normalize("CÁRLOS"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
我通过实现以下代码解决了这种情况:
$('#inputid, #inputid').bind('keypress', function (event) {
var regex = new RegExp(/^[a-zA-Z ]+$/); //Note i left a white space between brackets.
var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
event.preventDefault();
return true;
}
});
现在我阻止用户输入信息,例如:
CHARLÍE, PETE#R, MöDRIC 12.
但他们可以输入类似的名称
CHARLIE DA COSTE, JHON, PETER FARGO
相关文章:
- 一个jquery验证器方法,它不接受纯数字或纯特殊字符,但接受上面是否有字母
- 使用javascript验证只有一个特殊字符的字符串
- 通过引导验证器限制文本框中的特殊字符
- 如何处理多种语言的表单验证(特殊字符):AngularJS
- 如何使用java和javascript进行特殊字符验证
- 在使用 JavaScript 验证表单时检查特殊字符 (, ; .)
- 不允许在文本框验证中使用特殊字符
- 验证输入是否仅包含特殊字符而不包含任何数字
- 仅允许一个特殊字符的预匹配验证
- JavaScript-如何在Firefox浏览器中启用箭头键,同时根据特殊字符验证输入字段
- 如何在JavaScript/JQuery中进行输入时验证或屏蔽某些特殊字符
- 特殊字符的javascript验证's索引/位置
- REGEXP的JavaScript中的标题验证,可以采用字母数字,也可以采用特殊字符[,/()&-:.space
- 用于验证一组特殊字符的正则表达式
- 我如何验证一个文本框,它应该只允许字符a-Z&a-z,不是整数也不是特殊字符
- Javascript验证:当点击提交时,阻止输入文本框中的特殊字符
- 如何验证html文本框不允许特殊字符和空格
- 如何设置公司名称应该以字符开始的javascript验证规则?可以包含数字和特殊字符
- Javascript特殊字符验证
- 使用1个特殊字符验证数字