当我使用全局标志和不区分大小写的标志时,这个正则表达式有什么问题?查询是用户生成的输入.结果应该是[true,true].
var query = 'Foo B';
var re = new RegExp(query, 'gi');
var result = [];
result.push(re.test('Foo Bar'));
result.push(re.test('Foo Bar'));
// result will be [true, false]
Run Code Online (Sandbox Code Playgroud)
var reg = /^a$/g;
for(i = 0; i++ < 10;)
console.log(reg.test("a"));Run Code Online (Sandbox Code Playgroud)
我在表单上写的验证有一个奇怪的问题.它是输入旁边的"检查用户名"按钮.输入默认值是用户名,例如'betamax'.当我按下"检查用户名"时,它会传递正则表达式并将用户名发送到服务器.服务器按预期运行并返回"2"以告诉javascript他们正在提交自己的用户名.
然后,当我再次单击该按钮时,正则表达式失败.由于正则表达式失败,显然没有任何内容发送到服务器.如果我再次按下该按钮,正则表达式将通过,然后将用户名发送到服务器.
我真的无法弄清楚它会做什么呢!对我来说完全是无稽之谈!
编辑:我在Firefox和Chrome(mac)中测试了这个问题
这是我的代码:
$j("#username-search").click(checkUserName);
function checkUserName() {
var userName = $j("#username").val();
var invalidUserMsg = 'Invalid username (a-zA-Z0-9 _ - and not - or _ at beginning or end of string)';
var filter = /^[^-_]([a-z0-9-_]{4,20})[^-_]$/gi;
if (filter.test(userName)) {
console.log("Pass")
$j.post(
"/account/profile/username_check/",
{ q: userName },
function(data){
if(data == 0) {
$j("#username-search-results").html("Error searching for username. Try again?");
}
else if(data == 5) {
$j("#username-search-results").html(invalidUserMsg);
}
else if(data == 4) {
$j("#username-search-results").html("Username too short or too long.");
}
else if(data == …Run Code Online (Sandbox Code Playgroud) 这是我的日期验证代码,当填入28/02/2017输入类型文本和按下按钮时.
首先它会true在代码中看到警报,如果第一个警报是true秒针警报也会提醒true.但我的第二个是警惕false.
检测布尔值的错误是什么?
if(regex.test(txt) === true)
{
alert("true");
p.innerHTML = "<h1 style='color:green'>Correct</h1>";
}
else
{
alert("false");
p.innerHTML = "<h1 style='color:red'>Wrong</h1>";;
}
Run Code Online (Sandbox Code Playgroud)
.
<input type="text" id="date" name="date" value="dd/mm/yyyy" />
<button onclick="isDate();">Check</button>
<p id="response"></p>
<script>
function isDate() {
var regex = /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g;
var txt = document.getElementById("date").value;
var p = document.getElementById("response");
alert(regex.test(txt));
if(regex.test(txt) === true)
{
alert("true");
p.innerHTML = "<h1 style='color:green'>Correct</h1>";
}
else
{
alert("false");
p.innerHTML = "<h1 style='color:red'>Wrong</h1>";;
}
}
</script>Run Code Online (Sandbox Code Playgroud)