如何仅验证英文字母字符

时间:2014-11-23 15:04:54

标签: jquery regex validation coldfusion jquery-validate

我在页面上有一个文本字段,允许人们输入他们的名字。然后将其包含在专门为其设置的URL中,例如mysite.net/johnnyfive

我不希望人们在他们的名字中使用任何特殊字符,包括非英语字母表中的字符,如阿拉伯语或中文。

如何验证 ColdFusion 中的English alphabet?我想出了英文名#REReplace(LCase(ARGUMENTS.Name), '[^a-z0-9]', '', 'ALL')#,以确保只允许字符A-Z和数字。但是,如果某人输入نازنین之类的内容,那么我希望它完全拒绝它,而不是试图替换它。

我也想在jQuery端执行此操作并将其绑定到文本字段,以便在有人尝试输入非英语字符时抛出错误。我想即使不允许使用á这样的变音字符。

我正在使用ColdFusion 10,jQuery 1.9和jQuery Validate

2 个答案:

答案 0 :(得分:6)

您可以使用相同的正则表达式来验证字段。在正则表达式周围添加锚点,以确保正则表达式匹配的字符串没有任何前提或后跟

^[^a-z0-9]$
  • ^将正则表达式固定在字符串的开头。

  • $在字符串末尾锚定正则表达式。

示例:http://regex101.com/r/tJ7tJ9/1

您可以使用匹配函数来确保字符串与正则表达式匹配

实施例

var str = "نازنین"; 
if(str.match(/^[a-z0-9]+$/gi))
{
    //Do something 
}
else
{
    // Do something else
}

答案 1 :(得分:2)

您可以使用DeAccent UDF(java):

http://www.cflib.org/udf/deAccent

<cfscript>
function deAccent(str){
    var Normalizer = createObject("java","java.text.Normalizer");
    var NormalizerForm = createObject("java","java.text.Normalizer$Form");
    var normalizedString = Normalizer.normalize(str, createObject("java","java.text.Normalizer$Form").NFD);
    var pattern = createObject("java","java.util.regex.Pattern").compile("\p{InCombiningDiacriticalMarks}+");
    return pattern.matcher(normalizedString).replaceAll("");
}
</cfscript>

然后执行字符串比较:

if (originalString NEQ deAccent(originalString)){
   writeOutput("Invalid String");
}

如果您想使用jQuery进行验证,可以使用对ColdFusion服务器的ajax请求来执行。你应该这样做,以确保字符串是唯一的,因为你声明你打算创建子目录/虚拟路径。