ฉันต้องการค้นหา reg ex ที่อนุญาตให้ใช้ตัวอักษรและตัวเลขเท่านั้น จนถึงตอนนี้ทุกคนที่ฉันลองใช้งานได้ก็ต่อเมื่อสตริงนั้นเป็นตัวอักษรและตัวเลขความหมายมีทั้งตัวอักษรและตัวเลข ฉันแค่ต้องการสิ่งที่จะอนุญาตและไม่ต้องการทั้งสองอย่าง
ฉันต้องการค้นหา reg ex ที่อนุญาตให้ใช้ตัวอักษรและตัวเลขเท่านั้น จนถึงตอนนี้ทุกคนที่ฉันลองใช้งานได้ก็ต่อเมื่อสตริงนั้นเป็นตัวอักษรและตัวเลขความหมายมีทั้งตัวอักษรและตัวเลข ฉันแค่ต้องการสิ่งที่จะอนุญาตและไม่ต้องการทั้งสองอย่าง
คำตอบ:
/^[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 _.-]+)$/
สิ่งนี้จะสนับสนุนเปอร์เซีย
[^\W_]
แต่[a-z0-9]
/ i เป็นวิธีที่ชัดเจน
หากคุณต้องการส่งคืนผลลัพธ์ที่ถูกแทนที่สิ่งนี้จะใช้ได้:
var a = 'Test123*** TEST';
var b = a.replace(/[^a-z0-9]/gi,'');
console.log(b);
สิ่งนี้จะกลับมา:
Test123TEST
โปรดทราบว่า gi มีความจำเป็นเพราะมันหมายถึงทั่วโลก (ไม่ใช่แค่ในนัดแรก) และตัวพิมพ์เล็ก - ใหญ่ซึ่งเป็นสาเหตุที่ฉันมี az แทน a-zA-Z และ ^ ภายในเครื่องหมายวงเล็บหมายถึง "อะไรก็ตามที่ไม่อยู่ในวงเล็บเหล่านี้"
คำเตือน: ตัวอักษรและตัวเลขเป็นสิ่งที่ดีถ้านั่นคือสิ่งที่คุณต้องการ แต่ถ้าคุณกำลังใช้สิ่งนี้ในตลาดต่างประเทศเช่นชื่อของบุคคลหรือพื้นที่ทางภูมิศาสตร์คุณต้องพิจารณาอักขระยูนิโค้ดซึ่งสิ่งนี้จะไม่ทำ ตัวอย่างเช่นหากคุณมีชื่อเช่น "Âlvarö" มันจะทำให้ "lvar"
ใช้คลาสอักขระคำ ต่อไปนี้เทียบเท่ากับ^[a-zA-Z0-9_]+$
:
^\w+$
คำอธิบาย:
ใช้/[^\w]|_/g
หากคุณไม่ต้องการจับคู่ขีดล่าง
/^([a-zA-Z0-9 _-]+)$/
regex ด้านบนอนุญาตให้มีช่องว่างด้านข้างของสตริงและ จำกัด อักขระพิเศษเฉพาะอนุญาตให้ az, AZ, 0-9, Space, ขีดล่างและขีด
^\s*([0-9a-zA-Z]*)\s*$
หรือถ้าคุณต้องการอักขระอย่างน้อยหนึ่งตัว:
^\s*([0-9a-zA-Z]+)\s*$
วงเล็บเหลี่ยมแสดงชุดของอักขระ ^ คือจุดเริ่มต้นของอินพุต $ คือจุดสิ้นสุดการป้อนข้อมูล (หรือขึ้นบรรทัดใหม่ขึ้นอยู่กับตัวเลือกของคุณ) \ s คือช่องว่าง
ช่องว่างก่อนและหลังเป็นตัวเลือก
วงเล็บคือตัวดำเนินการจัดกลุ่มเพื่อให้คุณสามารถดึงข้อมูลที่คุณต้องการ
แก้ไข: ลบการใช้ชุดอักขระ \ w ที่ผิดพลาดของฉัน
แทนที่จะตรวจสอบสตริงตัวอักษรและตัวเลขที่ถูกต้องคุณสามารถทำสิ่งนี้ได้โดยอ้อมโดยการตรวจสอบสตริงสำหรับอักขระที่ไม่ถูกต้อง ทำได้โดยตรวจสอบสิ่งที่ตรงกับส่วนประกอบของสตริงตัวอักษรและตัวเลขที่ถูกต้อง
/[^a-z\d]/i
นี่คือตัวอย่าง:
var alphanumeric = "someStringHere";
var myRegEx = /[^a-z\d]/i;
var isValid = !(myRegEx.test(alphanumeric));
สังเกตุลอจิคัลไม่ใช่โอเปอเรเตอร์ที่isValid
เนื่องจากฉันกำลังทดสอบว่าสตริงนั้นเป็นเท็จหรือไม่
สิ่งนี้จะได้ผล
^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$
ยอมรับเฉพาะอักขระตัวอักษรและตัวเลขเท่านั้น:
กรณีทดสอบ pased:
dGgs1s23 - valid
12fUgdf - valid,
121232 - invalid,
abchfe - invalid,
abd()* - invalid,
42232^5$ - invalid
หรือ
คุณสามารถลองอันนี้ การแสดงออกนี้พอใจอย่างน้อยหนึ่งหมายเลขและหนึ่งตัวอักษรและไม่มีอักขระพิเศษอื่น ๆ
^(?=.*[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);
ขยายต้นแบบเครื่องสายที่จะใช้ตลอดโครงการของคุณ
String.prototype.alphaNumeric = function() {
return this.replace(/[^a-z0-9]/gi,'');
}
การใช้งาน:
"I don't know what to say?".alphaNumeric();
//Idontknowwhattosay
ป้อนรหัสเหล่านี้ลงใน SCRATCHPAD ของคุณและดูการทำงาน
var str=String("Blah-Blah1_2,oo0.01&zz%kick").replace(/[^\w-]/ig, '');
ดูเหมือนว่าผู้ใช้หลายคนสังเกตเห็นว่าการแสดงออกปกติเหล่านี้จะล้มเหลวอย่างแน่นอนเว้นแต่ว่าเราจะทำงานเป็นภาษาอังกฤษ แต่ฉันคิดว่ามีวิธีง่าย ๆ ที่จะไม่ จำกัด
อักขระใด ๆ ที่ตรงกับสตริงเหล่านั้นไม่ได้เป็นตัวอักษรตามธรรมชาติ
let copy1 = originalString.toUpperCase();
let copy2 = originalString.toLowerCase();
for(let i=0; i<originalString.length; i++) {
let bIsAlphabetic = (copy1[i] != copy2[i]);
}
คุณยังสามารถตรวจจับตัวเลขได้โดยเพียงแค่ค้นหาตัวเลข 0 ถึง 9
ลองนี้ ... แทนที่ ID ฟิลด์ของคุณด้วย #name ... az (a ถึง z), AZ (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;
});
});
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>
ดียิ่งกว่าGayan Dissanayake
ชี้ให้เห็น
/^[-\w\s]+$/
ตอนนี้^[a-zA-Z0-9]+$
สามารถแสดงเป็น^\w+$
คุณอาจต้องการใช้\ sแทนการเว้นวรรค โปรดทราบว่า\ sดูแลช่องว่างและไม่ใช่อักขระช่องว่างเพียงตัวเดียว
ฉันมีสตริงคล้ายกับSamsung Galaxy A10s 6.2 นิ้ว (2GB, 32GB ROM) Android 9.0, (13MP + 2MP) + 8MP Dual SIM 4000mAh 4G LTE สมาร์ทโฟน - ดำ (BF19)
ด้านล่างคือสิ่งที่ฉันทำ:
string.replace(/[^a-zA-Z0-9 ,._-]/g, '').split(',').join('-').split(' ').join('-').toLowerCase()
แจ้งให้ทราบฉันได้รับอนุญาต ,._-
แล้วใช้split()
และjoin()
ที่จะเปลี่ยน,
ไป-
และพื้นที่ที่จะ-
ตามลำดับ
ฉันได้รับสิ่งนี้:
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]+$/
ตอนนี้สำหรับการตรวจสอบการใช้งานส่วนหนึ่งจับคู่ ()
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 ที่จะยอมรับเฉพาะตัวเลขตัวอักษรและอักขระพิเศษ
<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">
ป้อนเฉพาะตัวเลข:
ป้อนเฉพาะตัวอักษร:
ป้อนตัวอักษรอื่นที่ไม่ใช่ตัวอักษรและตัวเลขเช่นตัวอักษรพิเศษ:
</body>
</html>