繁体   English   中英

验证不以特殊字符开头或结尾的文本框

[英]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"); } }); 

尝试模式如下: ^[a-z0-9](?!.*?[^\\na-z0-9]{100}).*?[a-z0-9]$

这是它的演示 你可以检查一下。

您的代码中也有一些错误,在这里我创建了一个新的小提琴。 根据您可以修改您的代码。 它可能会起作用。

1>将我的小提琴中的功能更改为.change
2>将模式与字符串进行比较,例如pattern.test(string)

与工作模式的新提琴
希望以上解决方案为您服务。

看起来您可能正在寻找与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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM