目前我有这个
^[^a-zA-Z0-9\\-\\s]+$
表达但它允许特殊字符。我只想在中间允许这些[- .,$% ]
字符。
答案 0 :(得分:0)
您可以使用negative lookahead assertion
$('#input').on('input', function(i, v) {
$(this).css('color', /^(?!((^[- .,$%].*)|(.*[- .,$%]$)))[^a-zA-Z0-9\-\s]+$/.test(this.value) ? 'green':'red' );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="input" />
<强> Regex explanation 强>
^(?!((^[- .,$%].*)|(.*[- .,$%]$)))[^a-zA-Z0-9\-\s]+$
答案 1 :(得分:0)
这不允许空间和还将允许提及特殊字符
^[A-Za-z0-9_@./#&+-\[\]$%]*$
允许介于两者之间但不是在开始时
^[^-\s][a-zA-Z0-9_\s-_@./#&+-\[\]$%]+$