我正在尝试验证输入字段必须包含字母数字和斜杠作为其值。
例如:AA / AB / 12314/2017 / ASD
以上显示的是应该是输入字段的值的示例。 我对编写正则表达式没有任何了解。所以请帮帮我。
最后我提出了以下代码:
var message = $('#message').val();
if (/^[a-zA-Z0-9-/]*$/.test($.trim(message)) == false)
{
$('#message').focus();
alert('invalid message');
}
答案 0 :(得分:4)
它必须包含字母数字和斜杠。
据我所知,您可能有1个以上的字母数字符号,后跟至少1个/
,后跟更多的字母数字符号。您需要将正则表达式更改为/^[a-z\d]+(?:\/[a-z\d]+)+$/i
:
var message = $('#message').val();
if (!/^[a-z\d]+(?:\/[a-z\d]+)+$/i.test($.trim(message)))
{
$('#message').focus();
alert('invalid message');
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="message" value="ASD/TD"/>
&#13;
<强>详情:
^
- 字符串开头[a-z\d]+
- 一个或多个字母或数字(?:\/[a-z\d]+)+
- 1个或多个序列
\/
- 斜杠[a-z\d]+
- 一个或多个字母或数字$
- 字符串结尾/i
- 不区分大小写的修饰符,因此[a-z]
也可以匹配大写的ASCII字母。 如果您的意思是字符串中必须有/
和字母数字 ,请使用lookaheads:
/^(?=[a-z\d]*\/)(?=\/*[a-z\d])[a-z\d\/]+$/i
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
请参阅regex demo。在此处,(?=[a-z\d]*\/)
在0+字母数字之后需要/
,并且(?=\/*[a-z\d])
在0+斜杠之后需要字母数字。 [a-z\d\/]+
将匹配1个或多个字母数字或斜杠。
答案 1 :(得分:1)
像
/
一样转义\/
是一种很好的做法,但在char类中,不是必需的。
*
必须更改为+
。因为*
也会匹配null
同时删除-
,否则-
也将匹配。
function validate(){
var message = $('#message').val();
if (/^[a-zA-Z0-9/]+$/.test($.trim(message)) == false){
$('#message').focus();
alert('invalid message');
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="message"></textarea><button onclick="validate();">Test</button>
答案 2 :(得分:0)
function checkValidity(input){
var onlyAlphaNum = /^[a-z0-9//]+$/
return onlyAlphaNum.test(input);
}
var message = $('#message').val();
if(!checkValidity(message)){
$('#message').focus();
alert('invalid message');
}
&#13;