使用 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 true
或 false
(与 String#match
一起使用,与 [=47= 相关的不必要的开销] 使用此处不需要的值对所有数组进行处理):
if (/^(?!\d+$)[^>#<@*]+$/.test($(this).val())) {....}
我有一个表格,我想单独禁用 < > # @
和数字('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 true
或 false
(与 String#match
一起使用,与 [=47= 相关的不必要的开销] 使用此处不需要的值对所有数组进行处理):
if (/^(?!\d+$)[^>#<@*]+$/.test($(this).val())) {....}