Preciso encontrar um reg ex que permita apenas alfanumérico. Até agora, todo mundo que eu tento funciona apenas se a sequência for alfanumérica, ou seja, contém uma letra e um número. Eu só quero um que permita um e não exija os dois.
Preciso encontrar um reg ex que permita apenas alfanumérico. Até agora, todo mundo que eu tento funciona apenas se a sequência for alfanumérica, ou seja, contém uma letra e um número. Eu só quero um que permita um e não exija os dois.
Respostas:
/^[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
Atualização (suportando caracteres universais)
se você precisar desse regexp, suporte a caracteres universais, poderá encontrar a lista de caracteres unicode aqui.
por exemplo: /^([a-zA-Z0-9\u0600-\u06FF\u0660-\u0669\u06F0-\u06F9 _.-]+)$/
isso apoiará persa.
[^\W_]
mas [a-z0-9]
/ i é uma maneira óbvia.
Se você deseja retornar um resultado substituído, isso funcionaria:
var a = 'Test123*** TEST';
var b = a.replace(/[^a-z0-9]/gi,'');
console.log(b);
Isso retornaria:
Test123TEST
Observe que o gi é necessário porque significa global (não apenas na primeira correspondência) e sem distinção entre maiúsculas e minúsculas, e é por isso que eu tenho az em vez de a-zA-Z. E o ^ dentro dos colchetes significa "qualquer coisa que não esteja entre colchetes".
AVISO: Alfanumérico é ótimo se é exatamente isso que você deseja. Mas se você estiver usando isso em um mercado internacional como o nome ou a área geográfica de uma pessoa, precisará considerar caracteres unicode, o que não será suficiente. Por exemplo, se você tiver um nome como "Âlvarö", seria "lvar".
Use a palavra classe de caracteres. O seguinte é equivalente a ^[a-zA-Z0-9_]+$
:
^\w+$
Explicação:
Use /[^\w]|_/g
se não desejar corresponder ao sublinhado.
/^([a-zA-Z0-9 _-]+)$/
o regex acima permite espaços ao lado de uma sequência e restringe caracteres especiais. Somente permite az, AZ, 0-9, Espaço, Sublinhado e traço.
^\s*([0-9a-zA-Z]*)\s*$
ou, se você quiser no mínimo um caractere:
^\s*([0-9a-zA-Z]+)\s*$
Colchetes indicam um conjunto de caracteres. ^ é o início da entrada. $ é o final da entrada (ou nova linha, dependendo de suas opções). \ s é um espaço em branco.
O espaço em branco antes e depois é opcional.
Os parênteses são o operador de agrupamento para permitir que você extraia as informações desejadas.
EDIT: removeu meu uso incorreto do conjunto de caracteres \ w.
Em vez de procurar uma sequência alfanumérica válida, você pode conseguir isso indiretamente, verificando se há caracteres inválidos na sequência. Faça isso verificando se há algo que corresponda ao complemento da sequência alfanumérica válida.
/[^a-z\d]/i
Aqui está um exemplo:
var alphanumeric = "someStringHere";
var myRegEx = /[^a-z\d]/i;
var isValid = !(myRegEx.test(alphanumeric));
Observe o operador não lógico em isValid
, pois estou testando se a string é falsa, não se é válida.
Isso vai funcionar
^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$
Ele aceita apenas caracteres alfanuméricos sozinho:
casos de teste corrigidos:
dGgs1s23 - valid
12fUgdf - valid,
121232 - invalid,
abchfe - invalid,
abd()* - invalid,
42232^5$ - invalid
ou
Você também pode tentar este. esta expressão satisfez pelo menos um número e um caractere e nenhum outro caractere especial
^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$
em angular pode testar como:
$scope.str = '12fUgdf';
var pattern = new RegExp('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$');
$scope.testResult = pattern.test($scope.str);
Estenda o protótipo de cadeia para uso em todo o projeto
String.prototype.alphaNumeric = function() {
return this.replace(/[^a-z0-9]/gi,'');
}
Uso:
"I don't know what to say?".alphaNumeric();
//Idontknowwhattosay
Parece que muitos usuários notaram que essas expressões regulares quase certamente falharão, a menos que estejamos trabalhando estritamente em inglês. Mas acho que há um caminho fácil a seguir que não seria tão limitado.
Quaisquer caracteres que correspondam a essas strings definitivamente não são de natureza alfabética.
let copy1 = originalString.toUpperCase();
let copy2 = originalString.toLowerCase();
for(let i=0; i<originalString.length; i++) {
let bIsAlphabetic = (copy1[i] != copy2[i]);
}
Opcionalmente, você também pode detectar números, procurando apenas os dígitos de 0 a 9.
Tente isso ... Substitua o ID do campo por #name ... az (a a z), AZ (A a Z), 0-9 (0 a 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;
});
});
JAVASCRIPT para aceitar apenas NÚMEROS, ALFABETOS e CARÁTERES ESPECIAIS
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>
Tenho uma string semelhante ao Samsung Galaxy A10s de 6.2 polegadas (2GB, 32GB ROM) Android 9.0, (13MP + 2MP) + 8MP Dual SIM 4000mAh 4G LTE Smartphone - Preto (BF19)
Abaixo está o que eu fiz:
string.replace(/[^a-zA-Z0-9 ,._-]/g, '').split(',').join('-').split(' ').join('-').toLowerCase()
Observe eu permiti ,._-
em seguida, usar split()
e join()
substituir ,
a -
e espaço para-
, respectivamente.
Acabei recebendo algo parecido com isto:
samsung-galaxy-a10s-6.2-inch-2gb-32gb-rom-android-9.0-13mp-2mp-8mp-dual-sim-4000mah-4g-lte-smartphone-black-bf19-20
que eu queria.
Pode haver uma solução melhor, mas é isso que eu achei funcionando bem para mim.
Salve esta constante
const letters = /^[a-zA-Z0-9]+$/
agora, para verificar a parte, use .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
Jquery para aceitar apenas NÚMEROS, ALFABETOS e CHARECTERS ESPECIAIS
<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">
Digite apenas números:
digite apenas alfabetos:
digite outros que não alfabetos e números como caracteres especiais:
</body>
</html>