我已经编写了验证测试,但满足if
条件
即使不应该这样做。
这是我的代码:
function chk_val() {
var name = $('.info .name').val();
var birth = $('.info .birth').val();
var phone = $('.info .phone').val();
var eng_kor = /^[가-힣a-z]+$/gi;
var num = /^[0-9]+$/g;
if (name == '' || birth == '' || phone == '') {
alert('1');
} else if (!eng_kor.test(name)) {
alert('2');
} else if (!num.test(birth)) {
alert('3');
} else if (birth.length != 8) {
alert('4');
} else if (!num.test(phone)) {
alert('5');
} else if (phone.length != 10 && phone.length != 11) {
alert('6');
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="info">
<input class="name" type="text" />
<input class="birth" type="text" maxlength="8" />
<input class="phone" type="text" maxlength="11" />
</div>
<button onclick="chk_val()">Check</button>
我写了name
(wonki
),birth
(19890222
)和phone
(01012341234
),然后单击{{ 1}}。它可以传递所有button(onclick="chk_val()")
语句,但被if
或alert('3')
捕获。
我使用alert('5')
来检查console.log
和num.test(birth)
的值,结果为TRUE。
我不知道为什么我不能通过num.test(phone)
和if(!num.test(birth))
。
答案 0 :(得分:1)
如其中一条注释中所述,您需要从正则表达式中删除全局标志(/ g)。
如果正则表达式设置了全局标志,则test()将使 正则表达式的lastIndex。随后使用test()将启动 搜索由lastIndex(exec()将指定的str的子字符串 还可以推进lastIndex属性)。值得注意的是 测试其他字符串时,lastIndex不会重置。
答案 1 :(得分:1)
您只需要将RegExp更改为数字
app.Map("/specificpath", subApp => {
subApp.Use(async (context, next) =>
{
if (!context.User.Identity.IsAuthenticated)
{
context.Response.StatusCode = StatusCodes.Status401Unauthorized;
}
else if(context.Request.Path.StartsWithSegments("/specificpath/User1") && context.User.Identity.Name != "User1")
{
context.Response.StatusCode = StatusCodes.Status401Unauthorized;
}
});
});
app.UseStaticFiles();
function chk_val() {
var name = $('.info .name').val();
var birth = $('.info .birth').val();
var phone = $('.info .phone').val();
var eng_kor = /^[가-힣a-z]+$/gi;
var num = new RegExp('^\\d+$');
if (name == '' || birth == '' || phone == '') {
alert('1');
} else if (!eng_kor.test(name)) {
alert('2');
} else if (!num.test(birth)) {
alert('3');
} else if (birth.length != 8) {
alert('4');
} else if (!num.test(phone)) {
alert('5');
} else if (phone.length != 10 && phone.length != 11) {
alert('6');
}
}