相关疑难解决方法(0)

为什么带有全局标志的RegExp会产生错误的结果?

当我使用全局标志和不区分大小写的标志时,这个正则表达式有什么问题?查询是用户生成的输入.结果应该是[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)

javascript regex

254
推荐指数
4
解决办法
4万
查看次数

Javascript正则表达式返回true ..然后false ..然后是真等..等等

我在表单上写的验证有一个奇怪的问题.它是输入旁边的"检查用户名"按钮.输入默认值是用户名,例如'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)

html javascript regex ajax jquery

97
推荐指数
1
解决办法
2万
查看次数

标签 统计

javascript ×2

regex ×2

ajax ×1

html ×1

jquery ×1