Javascript的RegEx只允许字母数字

我需要找到一个只允许字母数字的reg ex。到目前为止,我尝试的每个人都只在字符串是字母数字的情况下工作,意思是既包含字母又包含数字。我只想要一个既允许其中一种,又不要求两者兼得的。

559830 次浏览
^\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支持通用字符,你可以找到unicode字符列表。

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

这将支持波斯语。

使用字符类这个词。下面等价于^[a-zA-Z0-9_]+$:

^\w+$

解释:

  • ^字符串的开始
  • \w任意字符(A-Z, A-Z, 0-9, _)。
  • $ end of string

如果不想匹配下划线,请使用/[^\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-zA-Z0-9 _-]+)$/

上面的正则表达式允许字符串中有空格并限制特殊字符。它只允许 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));

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

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

    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]+$

它只接受字母数字字符:
通过的测试用例:

dGgs1s23 - valid
12fUgdf  - valid,
121232   - invalid,
abchfe   - invalid,
abd()*  - invalid,
42232^5$ - invalid

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

^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$

在angular中可以这样测试:

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

< a href = " http://plnkr.co/edit/GNOD9w3uNTZVExzqIjvx?p=preview" rel="noreferrer">PLUNKER DEMO

提到:Angularjs中字母数字的正则表达式

似乎许多用户已经注意到,除非我们严格使用英语,否则这些正则表达式几乎肯定会失败。但我认为有一种不受限制的简单方法。

  1. 复制你的字符串在所有大写
  2. 用小写字母复制一份

在这些字符串中匹配的任何字符本质上肯定不是字母。

let copy1 = originalString.toUpperCase();
let copy2 = originalString.toLowerCase();
for(let i=0; i<originalString.length; i++) {
let bIsAlphabetic = (copy1[i] != copy2[i]);
}

此外,您还可以通过查找数字0到9来检测数字。

< p >试试这个…将字段ID替换为#name… a-z(a到z), A-Z(A到Z), 0-9(0到9)

jQuery(document).ready(function($){
$('#name').keypress(function (e) {
var regex = new RegExp("^[a-zA-Z0-9\s]+$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(str)) {
return true;
}
e.preventDefault();
return false;
});
});

将这些代码输入到您的SCRATCHPAD并查看操作。

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

Jquery只接受数字,字母和特殊字符

<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>


<body>
Enter Only Numbers:
<input type="text" id="onlynumbers">
<br><br>
Enter Only Alphabets:
<input type="text" id="onlyalpha">
<br><br>
Enter other than Alphabets and numbers like special characters:
<input type="text" id="speclchar">


<script>
$('#onlynumbers').keypress(function(e) {
var letters=/^[0-9]/g; //g means global
if(!(e.key).match(letters)) e.preventDefault();
});
    

$('#onlyalpha').keypress(function(e) {
var letters=/^[a-z]/gi; //i means ignorecase
if(!(e.key).match(letters)) e.preventDefault();
});
    

$('#speclchar').keypress(function(e) {
var letters=/^[0-9a-z]/gi;
if((e.key).match(letters)) e.preventDefault();
});
</script>
</body>
</html>

**JQUERY to accept only NUMBERS , ALPHABETS and SPECIAL CHARACTERS **




<!DOCTYPE html>
$('#onlynumbers').keypress(function(e) {
var letters=/^[0-9]/g; //g means global
if(!(e.key).match(letters)) e.preventDefault();
});


$('#onlyalpha').keypress(function(e) {
var letters=/^[a-z]/gi; //i means ignorecase
if(!(e.key).match(letters)) e.preventDefault();
});


$('#speclchar').keypress(function(e) {
var letters=/^[0-9a-z]/gi;
if((e.key).match(letters)) e.preventDefault();
});
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">

只输入数字: < br > < br > 只输入字母: < br > < br > 输入除字母和数字以外的特殊字符:

</body>
</html>

JAVASCRIPT只接受数字,字母和特殊字符

document.getElementById("onlynumbers").onkeypress = function (e) {
onlyNumbers(e.key, e)
};


document.getElementById("onlyalpha").onkeypress = function (e) {
onlyAlpha(e.key, e)
};


document.getElementById("speclchar").onkeypress = function (e) {
speclChar(e.key, e)
};


function onlyNumbers(key, e) {
var letters = /^[0-9]/g; //g means global
if (!(key).match(letters)) e.preventDefault();
}


function onlyAlpha(key, e) {
var letters = /^[a-z]/gi; //i means ignorecase
if (!(key).match(letters)) e.preventDefault();
}


function speclChar(key, e) {
var letters = /^[0-9a-z]/gi;
if ((key).match(letters)) e.preventDefault();
}
<html>
<head></head>
<body>
Enter Only Numbers:
<input id="onlynumbers" type="text">
<br><br>
Enter Only Alphabets:
<input id="onlyalpha" type="text" >
<br><br>
Enter other than Alphabets and numbers like special characters:
<input id="speclchar" type="text" >
</body>
</html>

我有一个类似三星Galaxy A10s 6.2英寸(2GB,32GB ROM) Android 9.0,(1300万+ 200万)+ 800万双卡4000mAh 4G LTE智能手机-黑色(BF19)的字符串

以下是我所做的:

string.replace(/[^a-zA-Z0-9 ,._-]/g, '').split(',').join('-').split(' ').join('-').toLowerCase()

注意,我允许,._-然后使用split()join()分别将,替换为-,并将space替换为-

我最终得到了这样的东西: samsung-galaxy-a10s-6.2-inch-2gb-32gb-rom-android-9.0-13mp-2mp-8mp-dual-sim-4000mah-4g-lte-smartphone-black-bf19-20这是我想要的

可能有更好的解决方案,但这是我发现工作对我很好。

保存这个常数

const letters = /^[a-zA-Z0-9]+$/

现在,为了检查部件,使用.match()

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

字母数字区分大小写:

if (/^[a-zA-Z0-9]+$/.test("SoS007")) {
alert("match")
}

有点晚了,但这对我有用:

/[^a-z A-Z 0-9]+/g

a-z:从a到z的任意值。

A-Z:从A到Z的任意值(大写)。

0-9: 0 ~ 9之间的任意数字。

它将允许方括号内的任何字符,假设你想允许任何其他字符,例如"/"和"#",正则表达式将是这样的:

/[^a-z A-Z 0-9 / #]+/g
这个网站将帮助你在编码之前测试你的正则表达式。 https://regex101.com/ < / p >

可以随意修改和添加任何你想要的东西到括号中。 问候:)< / p >

对于多语言支持:

var filtered = 'Hello Привет 你好 123_456'.match(/[\p{L}\p{N}\s]/gu).join('')
console.log(filtered) // --> "Hello Привет 你好 123456"

这可以匹配大多数语言中的任何字母、数字或空格。

  • […)→符合条件
  • (ab)→匹配“a”或“b”
  • L \ p{}→匹配任意语言中的任意字母
  • \ p {N}→匹配任意语言的任意数字
  • \ s→匹配空格
  • / g→不要在第一场比赛后停下来
  • / u→支持unicode模式匹配

裁判:https://javascript.info/regexp-unicode

同样,如果你只是寻找字母字符,你可以使用下面的正则表达式:

/[^a-zA-Z]/gi

typescript中的示例代码:

let samplestring = "!#!&34!# Alphabet !!535!!! is safe"


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


console.log(res);

注意:如果你对正则表达式语法感到好奇,请访问regexr并使用小抄或使用正则表达式。

编辑:字母数字>字母顺序排列

只接受数字和字母(无空格)

function onlyAlphanumeric(str){
str.value=str.value.replace(/\s/g, "");//No Space
str.value=str.value.replace(/[^a-zA-Z0-9 ]/g, "");
}
<div>Only accept numbers and letters </div>
<input type="text"  onKeyUp="onlyAlphanumeric(this);" >