Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于Javascript的RegEx只允许字母数字_Javascript_Regex - Fatal编程技术网

用于Javascript的RegEx只允许字母数字

用于Javascript的RegEx只允许字母数字,javascript,regex,Javascript,Regex,我需要找到一个只允许字母数字的注册表。到目前为止,我尝试的每个人都只在字符串是字母数字的情况下工作,意思是同时包含字母和数字。我只想要一个既允许也不要求两者的 ^\s*([0-9a-zA-Z]*)\s*$ 或者,如果您至少需要一个字符: ^\s*([0-9a-zA-Z]+)\s*$ 方括号表示一组字符。^是输入的开始。$是输入的结尾(或换行符,取决于您的选项)\s是空白 前后的空格是可选的 括号是分组运算符,用于提取所需信息 编辑:删除了我对\w字符集的错误使用 /^[a-z0-9]+$/i

我需要找到一个只允许字母数字的注册表。到目前为止,我尝试的每个人都只在字符串是字母数字的情况下工作,意思是同时包含字母和数字。我只想要一个既允许也不要求两者的

^\s*([0-9a-zA-Z]*)\s*$
或者,如果您至少需要一个字符:

^\s*([0-9a-zA-Z]+)\s*$
方括号表示一组字符。^是输入的开始。$是输入的结尾(或换行符,取决于您的选项)\s是空白

前后的空格是可选的

括号是分组运算符,用于提取所需信息

编辑:删除了我对\w字符集的错误使用

/^[a-z0-9]+$/i

^         Start of string
[a-z0-9]  a or b or c or ... z or 0 or 1 or ... 9
+         one or more times (change to * to allow empty string)
$         end of string    
/i        case-insensitive
更新(支持通用字符)

如果需要此regexp支持通用字符,可以找到

例如:
/^([a-zA-Z0-9\u0600-\u06FF\u0660-\u0669\u06F0-\u06F9.-]+)$/


这将支持波斯语。

使用单词字符类。以下内容相当于a
^[a-zA-Z0-9\]+$

^\w+$
说明:

  • ^字符串开头
  • \w任意单词字符(A-Z,A-Z,0-9,uz)
  • $字符串结尾

如果您不想匹配下划线,请使用
/[^\w]|/g

如果您想返回替换的结果,则这将起作用:

var a = 'Test123*** TEST';
var b = a.replace(/[^a-z0-9]/gi,'');
console.log(b);
这将返回:

Test123TEST
请注意,gi是必需的,因为它表示全局(不仅仅在第一次匹配时),并且不区分大小写,这就是为什么我使用a-z而不是a-zA-z。括号内的^表示“这些括号中没有的任何内容”

警告:字母数字是伟大的,如果这正是你想要的。但是,如果你在国际市场上使用它,比如一个人的名字或地理区域,那么你需要考虑unicode字符,这是不行的。例如,如果你有一个像“lvarö”这样的名字,它会变成“lvar”

上面的正则表达式允许字符串中的空格并限制特殊字符。它只允许
a-z,a-z,0-9,空格,下划线和破折号。

甚至比Gayan Dissanayake所指出的要好

/^[-\w\s]+$/
现在
^[a-zA-Z0-9]+$
可以表示为
^\w+$

您可能希望使用\s而不是空格。请注意,\s处理空白字符,而不仅仅是一个空格字符


您可以通过检查字符串中的任何无效字符来间接实现这一点,而不是检查有效的字母数字字符串。通过检查与有效字母数字字符串的补码匹配的任何内容来执行此操作

/[^a-z\d]/i    
以下是一个例子:

var alphanumeric = "someStringHere";
var myRegEx  = /[^a-z\d]/i;
var isValid = !(myRegEx.test(alphanumeric));

请注意
处的逻辑not运算符isValid
,因为我正在测试字符串是否为false,而不是它是否有效。

扩展字符串原型以在整个项目中使用

    String.prototype.alphaNumeric = function() {
        return this.replace(/[^a-z0-9]/gi,'');
    }
用法:

    "I don't know what to say?".alphaNumeric();
    //Idontknowwhattosay
这会奏效的

^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$
它只接受字母数字字符:
测试用例pased:

dGgs1s23 - valid
12fUgdf  - valid,
121232   - invalid, 
abchfe   - invalid,
 abd()*  - invalid, 
42232^5$ - invalid
let samplestring = "!#!&34!# Alphabet !!535!!! is safe"

let regex = new RegExp(/[^a-zA-Z]/gi);
    let res = samplestring.replace(regex,'');

    console.log(res);

你也可以试试这个。此表达式至少满足一个数字和一个字符,而不满足其他特殊字符

^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$
在角度测试中,可以如下所示:

$scope.str = '12fUgdf';
var pattern = new RegExp('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$');
$scope.testResult = pattern.test($scope.str);


参考:

似乎很多用户都注意到了这一点,除非我们严格使用英语,否则这些正则表达式几乎肯定会失败。但我认为有一条简单的前进道路不会如此有限

  • 用大写字母复制字符串
  • 制作第二份全小写的副本
  • 在这些字符串中匹配的任何字符本质上都不是字母

    let copy1 = originalString.toUpperCase();
    let copy2 = originalString.toLowerCase();
    for(let i=0; i<originalString.length; i++) {
        let bIsAlphabetic = (copy1[i] != copy2[i]);
    }
    
    let copy1=originalString.toUpperCase();
    让copy2=originalString.toLowerCase();
    
    对于(让i=0;i试试这个…用#name替换字段ID。。。 a-z(a到z), A-Z(A到Z), 0-9(0-9)


    将这些代码输入草稿行并查看操作

    var str=String("Blah-Blah1_2,oo0.01&zz%kick").replace(/[^\w-]/ig, '');
    

    Jquery只接受数字、字母和特殊字符
    
    仅输入数字:
    

    仅输入字母:

    输入除字母和数字以外的特殊字符: $('#onlynumbers')。按键(功能(e){ 变量字母=//^[0-9]/g;//g表示全局 如果(!(e.key).match(字母))e.preventDefault(); }); $('#onlylpha')。按键(功能(e){ var letters=/^[a-z]/gi;//我是指ignorecase 如果(!(e.key).match(字母))e.preventDefault(); }); $(#speclchar')。按键(功能(e){ 变量字母=/^[0-9a-z]/gi; 如果((e.key).match(字母))e.preventDefault(); });
    只接受数字、字母和特殊字符的JAVASCRIPT

    document.getElementById(“onlyNumber”).onkeypress=函数(e){
    仅限号码(e.key,e)
    };
    document.getElementById(“onlylpha”).onkeypress=function(e){
    昂利亚法(e.key,e)
    };
    document.getElementById(“speclchar”).onkeypress=函数(e){
    speclChar(e.key,e)
    };
    仅函数编号(键,e){
    变量字母=//^[0-9]/g;//g表示全局
    如果(!(键).match(字母))e.preventDefault();
    }
    仅限功能YALPHA(键,e){
    var letters=/^[a-z]/gi;//我是指ignorecase
    如果(!(键).match(字母))e.preventDefault();
    }
    函数speclChar(键,e){
    变量字母=/^[0-9a-z]/gi;
    如果((键).match(字母))e.preventDefault();
    }
    
    仅输入数字:
    

    仅输入字母:

    输入除字母和数字以外的特殊字符:
    我有类似于三星Galaxy A10s 6.2英寸(2GB,32GB ROM)安卓9.0,(13MP+2MP)+8MP双卡4000mAh 4G LTE智能手机的字符串-黑色(BF19)

    以下是我所做的:

    string.replace(/[^a-zA-Z0-9 ,._-]/g, '').split(',').join('-').split(' ').join('-').toLowerCase()
    
    注意,我允许使用
    ,.-
    然后分别使用
    split()
    join()
    替换
    -
    和空格到
    -

    我最终得到了这样的结果:
    samsung-galaxy-a10s-6.2英寸-2gb-32gb-rom-android-9.0-13mp-2mp-8mp-dual-sim-4000mah-4g
    
    string.replace(/[^a-zA-Z0-9 ,._-]/g, '').split(',').join('-').split(' ').join('-').toLowerCase()
    
    const letters = /^[a-zA-Z0-9]+$/
    
    const string = 'Hey there...' // get string from a keyup listner
    let id = ''
    // iterate through each letters
    for (var i = 0; i < string.length; i++) {
      if (string[i].match(letters) ) {
        id += string[i]
      } else {
        // In case you want to replace with something else
        id += '-'  
      }
    }
    return id
    
    <script type="text/javascript">
    //this will prevent characters that are not alphanumeric
    //this will also prevent pasting of characters that are not alphanumeric
    
    $("#myinput").on('input paste', function() {
        var valx = $(this).val();
        var regexh = /([-!$%^&*()_+|~±≈≠≡【〔「『】〕」』№٪‰–—‽=`{}\[\]:@×÷#";'<>?,.\/])/g;
        var resu = valx.replaceAll(regexh, "");
        $(this).val(resu);
    });
    </script>
    
    if (/^[a-zA-Z0-9]+$/.test("SoS007")) {
      alert("match")
    }
    
    /[^a-z A-Z 0-9]+/g
    
    /[^a-z A-Z 0-9 / #]+/g
    
    /[^a-zA-Z]/gi 
    
    let samplestring = "!#!&34!# Alphabet !!535!!! is safe"
    
    let regex = new RegExp(/[^a-zA-Z]/gi);
        let res = samplestring.replace(regex,'');
    
        console.log(res);