【问题标题】:Allow no special characters unless specified除非指定,否则不允许特殊字符
【发布时间】:2020-03-18 13:32:19
【问题描述】:

我的问题在于我想限制所有特殊字符输入到我的文本框中,除了 2 个字符:

“-”和“.”

问题在于连字符的使用方式是我在规范中分隔字符的方式。 请参阅下面的 JavaScript

            domain = document.querySelector('#Domain_Input').value;
        let lettersDomain = /^[.a-zA-Z0-9-]+$/;
        if (domain == lettersDomain) {

            localStorage.setItem('Domain', domain);

            let cfmD = confirm("Did you mean to enter: \n" + domain + '?');

是否是通过转义这种将字符指定到 letterDomain 的方法来解决此问题的唯一方法?还是有另一种方法来分隔 9 之后的“-”:“9-]”

【问题讨论】:

    标签: javascript regex input


    【解决方案1】:

    您不应使用 == 将字符串与正则表达式进行比较,而应将字符串与正则表达式进行比较:

    let domain = 'qweertryrtyrt';
    let domainRegexp = /^[a-zA-Z0-9\-\.]+$/gi;
    if (domain.match(domainRegexp) !== null) {
        alert('Correct!');
    } else {
        alert('Wrong!'); 
    }
    

    还要在正则表达式中包含点和破折号,您应该使用 \(斜杠),否则点表示任何字符。

    match 函数的文档

    【讨论】:

    • 很抱歉回复晚了,但谢谢伙计! match 函数肯定会让我所有的正则表达式比较更简单,整体更好。
    【解决方案2】:

    通过指定非特殊字符的 ASCII 省略不需要的字符。 http://www.asciitable.com/

     function onKeyUp(event){
        var k = event.charCode;
        return ((k >= 65 && k <= 90) || (k >= 97 && k <= 122) || (k >= 49 && k <= 57))
        }
    

    【讨论】:

    • 谢谢你,我确信这确实有效,但上面的方法更适合我正在做的代码风格,我不知道你可以指定 ascii 字符值,所以这是非常有用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多