[英]validate a textbox that Doesn't Start or End With Special Character
我有一些要求,我需要实现一个文本框,该文本框不允许在字符串的开头和结尾使用特殊字符,但可以选择在单词示例的中间: 1)Some_ @ thing --True 2)_ #2someThing --False 3)something_ @ --false *
$(function () { $('#text').on("change", function (e) { if (this.value.match(/^[a-z0-9](?!.*?[^\\na-z0-9]{100}).*?[a-z0-9]$/)) { this.value = this.value.replace(/^[a-z0-9](?!.*?[^\\na-z0-9]{100}).*?[a-z0-9]$/, ''); $("#eror").text("Accepts only Alphabets"); } });
看起来您可能正在寻找与yash发布相反的内容,筛选违反规则的实例,而不是遵守该规则。
如果特殊字符规则已被破坏,则您的“ if”条件似乎正在寻找返回true的结果,因此您可能需要遵循以下条件:
//allows only letters and numbers at the start and end
/^[\W_\s].*$|^.*[\W_\s]$/
//allows only letters (and not numbers) at the start and end
/^[^A-Za-z_\s].*$|^.*[^A-Za-z_\s]$/
两者都将允许字符串本身内的特殊字符,而不是起始和结束字符,而不会触发布尔值,但是如果字符串以相同的字符开头或结尾,则会触发布尔值。
附带说明一下,如果您只对测试正则表达式匹配感兴趣,而对实际返回正则表达式匹配不感兴趣,则应使用:
regex.test('string')
//instead of
string.match(/regex/)
match
对您的需求而言太过苛刻,只会减慢您的申请速度。 test
直接以布尔形式返回其结果,并且比match
快得多。
MDN有关使用“测试”的部分 (如果您有兴趣了解有关此特定用例的更多信息)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.