Tôi cần tìm một reg ex chỉ cho phép chữ và số. Cho đến nay, mọi người tôi thử chỉ hoạt động nếu chuỗi là chữ và số, nghĩa là chứa cả chữ và số. Tôi chỉ muốn một thứ sẽ cho phép hoặc không yêu cầu cả hai.
Tôi cần tìm một reg ex chỉ cho phép chữ và số. Cho đến nay, mọi người tôi thử chỉ hoạt động nếu chuỗi là chữ và số, nghĩa là chứa cả chữ và số. Tôi chỉ muốn một thứ sẽ cho phép hoặc không yêu cầu cả hai.
Câu trả lời:
/^[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
Cập nhật (hỗ trợ các ký tự phổ quát)
Nếu bạn cần regrec này hỗ trợ nhân vật phổ quát, bạn có thể tìm thấy danh sách các charaters unicode ở đây.
ví dụ: /^([a-zA-Z0-9\u0600-\u06FF\u0660-\u0669\u06F0-\u06F9 _.-]+)$/
Điều này sẽ hỗ trợ Ba Tư.
[^\W_]
nhưng [a-z0-9]
/ tôi là một cách rõ ràng.
Nếu bạn muốn trả về một kết quả thay thế, thì điều này sẽ hoạt động:
var a = 'Test123*** TEST';
var b = a.replace(/[^a-z0-9]/gi,'');
console.log(b);
Điều này sẽ trở lại:
Test123TEST
Lưu ý rằng gi là cần thiết bởi vì nó có nghĩa là toàn cầu (không chỉ trong trận đấu đầu tiên) và không phân biệt chữ hoa chữ thường, đó là lý do tại sao tôi có az thay vì a-zA-Z. Và ^ bên trong ngoặc có nghĩa là "bất cứ điều gì không có trong các dấu ngoặc".
CẢNH BÁO: Chữ và số thật tuyệt nếu đó chính xác là những gì bạn muốn. Nhưng nếu bạn đang sử dụng điều này trong một thị trường quốc tế như tên hoặc khu vực địa lý của một người, thì bạn cần tính đến các ký tự unicode, điều này sẽ không xảy ra. Chẳng hạn, nếu bạn có một cái tên như "Âlvarö", nó sẽ biến nó thành "lvar".
Sử dụng lớp ký tự từ. Sau đây là tương đương với một^[a-zA-Z0-9_]+$
:
^\w+$
Giải trình:
Sử dụng /[^\w]|_/g
nếu bạn không muốn khớp với dấu gạch dưới.
/^([a-zA-Z0-9 _-]+)$/
regex ở trên cho phép không gian bên cạnh một chuỗi và hạn chế các ký tự đặc biệt. Nó chỉ cho phép az, AZ, 0-9, Space, Underscore và dash.
^\s*([0-9a-zA-Z]*)\s*$
hoặc, nếu bạn muốn tối thiểu một ký tự:
^\s*([0-9a-zA-Z]+)\s*$
Dấu ngoặc vuông cho biết một tập hợp các ký tự. ^ là bắt đầu của đầu vào. $ là kết thúc của đầu vào (hoặc dòng mới, tùy thuộc vào tùy chọn của bạn). \ s là khoảng trắng.
Khoảng trắng trước và sau là tùy chọn.
Các dấu ngoặc đơn là toán tử nhóm để cho phép bạn trích xuất thông tin bạn muốn.
EDIT: đã loại bỏ việc sử dụng sai bộ ký tự \ w của tôi.
Thay vì kiểm tra chuỗi ký tự chữ và số hợp lệ, bạn có thể đạt được điều này một cách gián tiếp bằng cách kiểm tra chuỗi cho bất kỳ ký tự không hợp lệ nào. Làm như vậy bằng cách kiểm tra bất cứ thứ gì khớp với phần bù của chuỗi ký tự chữ và số hợp lệ.
/[^a-z\d]/i
Đây là một ví dụ:
var alphanumeric = "someStringHere";
var myRegEx = /[^a-z\d]/i;
var isValid = !(myRegEx.test(alphanumeric));
Lưu ý toán tử không phải toán tử tại isValid
, vì tôi đang kiểm tra xem chuỗi có sai hay không, liệu nó có hợp lệ không.
Điều này sẽ làm việc
^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$
Nó chỉ chấp nhận các ký tự alphanumeriuc:
các trường hợp thử nghiệm vượt qua:
dGgs1s23 - valid
12fUgdf - valid,
121232 - invalid,
abchfe - invalid,
abd()* - invalid,
42232^5$ - invalid
hoặc là
Bạn cũng có thể thử cái này biểu thức này thỏa mãn ít nhất một số và một ký tự và không có ký tự đặc biệt nào khác
^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$
trong góc có thể kiểm tra như:
$scope.str = '12fUgdf';
var pattern = new RegExp('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$');
$scope.testResult = pattern.test($scope.str);
Đã giới thiệu: Biểu thức chính quy cho chữ và số trong Angularjs
Mở rộng nguyên mẫu chuỗi để sử dụng trong suốt dự án của bạn
String.prototype.alphaNumeric = function() {
return this.replace(/[^a-z0-9]/gi,'');
}
Sử dụng:
"I don't know what to say?".alphaNumeric();
//Idontknowwhattosay
Có vẻ như nhiều người dùng đã nhận thấy điều này những biểu thức thông thường này gần như chắc chắn sẽ thất bại trừ khi chúng ta làm việc nghiêm túc bằng tiếng Anh. Nhưng tôi nghĩ rằng có một cách dễ dàng để không bị giới hạn.
Bất kỳ ký tự nào khớp trong các chuỗi đó chắc chắn không phải là chữ cái trong tự nhiên.
let copy1 = originalString.toUpperCase();
let copy2 = originalString.toLowerCase();
for(let i=0; i<originalString.length; i++) {
let bIsAlphabetic = (copy1[i] != copy2[i]);
}
Tùy chọn, bạn cũng có thể phát hiện các số bằng cách chỉ tìm các chữ số 0 đến 9.
Hãy thử điều này ... Thay thế ID trường của bạn bằng #name ... az (a thành z), AZ (A thành Z), 0-9 (0 đến 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 chỉ chấp nhận SỐ SỐ, ALPHABET và BỘ SẠC ĐẶC BIỆT
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>
Tôi có chuỗi tương tự như Samsung Galaxy A10s 6.2-Inch (2 GB, ROM 32 GB) Android 9.0, (13MP + 2MP) + 8MP Dual SIM 4000mAh Điện thoại thông minh 4G LTE - Đen (BF19)
Dưới đây là những gì tôi đã làm:
string.replace(/[^a-zA-Z0-9 ,._-]/g, '').split(',').join('-').split(' ').join('-').toLowerCase()
Chú ý tôi cho phép ,._-
sau đó sử dụng split()
và join()
thay thế ,
để -
và không gian để-
tương ứng.
Tôi cuối cùng đã nhận được một cái gì đó như thế này:
samsung-galaxy-a10s-6.2-inch-2gb-32gb-rom-android-9.0-13mp-2mp-8mp-dual-sim-4000mah-4g-lte-smartphone-black-bf19-20
đó là những gì tôi muốn.
Có thể có một giải pháp tốt hơn nhưng đây là những gì tôi thấy làm việc tốt cho tôi.
Lưu hằng này
const letters = /^[a-zA-Z0-9]+$/
bây giờ, để kiểm tra phần sử dụng .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 chỉ chấp nhận SỐ, ALPHABETS và ĐẶC BIỆT ĐẶC BIỆT
<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">
Chỉ nhập số:
Nhập chỉ bảng chữ cái:
Nhập khác với bảng chữ cái và số như các ký tự đặc biệt:
</body>
</html>