使用 jQuery 在输入表单中单独禁用标签和数字

Disable tags and numbers alone in input form with jQuery

我有一个表格,我想单独禁用 < > # @ 和数字('test 123' 应该可以)。

第一个条件我试过了

if ( $(this).val().match("^[^>#<@*]+$") ) { // todo }

但它每次都匹配..

我已经检查过 Whosebug、W3Schools 等,但我不知道为什么我不能应用正则表达式

谢谢

如果我没理解错的话,你想匹配至少有一个非数字字符且不包含以下字符的字符串:<, >, # and @
你可以用这个正则表达式来做到这一点:
(?=.*\D)[^<>#@]*

尝试以下操作:使用 RegExp 对象,您可以测试如下所示的模式

var regEx = new RegExp("[0-9a-zA-Z\s]+"); 
if ( regEx.test($(this).val()) ) 

您需要为您使用的模式添加一个负面回顾并定义像

这样的正则表达式
/^(?!\d+$)[^>#<@*]+$/

参见 regex demo(注意添加 \n 因为演示输入字符串包含换行符)。

详情:

  • ^ - 字符串开头
  • (?!\d+$) - 输入字符串不能只包含 1+ 个数字
  • [^>#<@*]+ - 除 >#<@*[=42= 以外的 1 个或多个字符]
  • $ - 字符串结尾。

RegExp#test 一起使用仅 return truefalse(与 String#match 一起使用,与 [=47= 相关的不必要的开销] 使用此处不需要的值对所有数组进行处理):

if (/^(?!\d+$)[^>#<@*]+$/.test($(this).val())) {....}