জাভাস্ক্রিপ্টের জন্য রেজিএক্স কেবলমাত্র আলফানিউমেরিকের অনুমতি দেওয়ার জন্য


237

আমার একটি প্রাক্তন রেজি খুঁজে পাওয়া দরকার যা কেবলমাত্র আলফানিউমারিকের অনুমতি দেয়। এখনও অবধি, আমি চেষ্টা করেছি প্রত্যেকে কেবল তখনই কাজ করে যদি স্ট্রিং বর্ণমালা হয়, যার অর্থ একটি বর্ণ এবং একটি সংখ্যা উভয়ই থাকে। আমি কেবল এমনটি চাই যা উভয়কেই অনুমতি দেয় এবং উভয়ের প্রয়োজন হয় না।

উত্তর:


512
/^[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

আপডেট (সর্বজনীন চরিত্রগুলিকে সমর্থন করে)

আপনার যদি এই রেজিপ্সের প্রয়োজন হয় সর্বজনীন চরিত্রকে সমর্থন করে আপনি এখানে ইউনিকোড চ্যাটারগুলির তালিকা পেতে পারেন

উদাহরণ স্বরূপ: /^([a-zA-Z0-9\u0600-\u06FF\u0660-\u0669\u06F0-\u06F9 _.-]+)$/

এই পার্সিয়ান সমর্থন করবে।


50
[আজ] আন্তর্জাতিক অক্ষরের সাথে মেলে না।
এরিক নরম্যান্ড

23
বাহ - আমি মনে করি না যতক্ষণ না এই সহজ উপায়ে এটি ভেঙে ফেলা না হয় আমি রেগেগ্সকে পুরোপুরি বুঝতে পেরেছি। ধন্যবাদ!
ম্যাট ক্যাস্যাট

সমস্যা - / জি ছাড়াই আপনি কেবল লাইন মোড়ানোর আগে ম্যাচগুলি প্রতিস্থাপন করবেন।
ভলমাইক

5
অন্য উপায় হতে পারে [^\W_]তবে [a-z0-9]/ আমি একটি সুস্পষ্ট উপায়।
ভিটিম.ইউস

36
@ গ্রেগ, আপনি কীভাবে আপনার রেজেক্স সম্পর্কিত উত্তরগুলি ব্যাখ্যা করবেন তা আমি উপভোগ করছি। আমার মতে কোনও ব্যাখ্যা ছাড়াই রেজেক্সেস এক প্রকারের অকেজো। কারণ আপনি যে ওয়ান-টাইম পেয়েছেন "হ্যাঁ এটি কাজ করে" এবং হঠাৎ করে, যখন আপনি এটি পরিবর্তন করার দরকার পড়েছেন ঠিক তখনই রিজেক্স কী করে তা শিখার পরিবর্তে আপনি একটি ভিন্ন ব্যবহারের ক্ষেত্রে ফিরে আসবেন । এছাড়াও, আপনি রেজেক্স ডকুমেন্টেশনের চেয়ে বোঝা সহজ: পি
ক্রিস সাইরেফাইস

147

আপনি যদি পরিবর্তিত ফলাফলটি ফিরিয়ে দিতে চান, তবে এটি কাজ করবে:

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

এটি ফিরে আসবে:

Test123TEST

নোট করুন যে জিআই প্রয়োজনীয় কারণ এটির অর্থ বৈশ্বিক (কেবলমাত্র প্রথম ম্যাচে নয়), এবং কেস-সংবেদনশীল, এ কারণেই আমার কাছে এ-জেডএ-জেডের পরিবর্তে অ্যাজ রয়েছে। এবং বন্ধনীগুলির ভিতরে means এর অর্থ "এই বন্ধনীগুলির মধ্যে নেই এমন কিছু"।

সতর্কতা: আপনি যা চান ঠিক তেমনটি হলে আলফানুমিকটি দুর্দান্ত। তবে যদি আপনি এটি কোনও ব্যক্তির নাম বা ভৌগলিক অঞ্চলের মতো কোনও আন্তর্জাতিক বাজারে ব্যবহার করে থাকেন তবে আপনাকে ইউনিকোড চরিত্রগুলির জন্য অ্যাকাউন্ট করতে হবে, যা এটি করবে না। উদাহরণস্বরূপ, যদি আপনার "vlvarö" এর মতো কোনও নাম থাকে তবে এটি এটি "lvar" করে দেবে।


3
ব্যাখ্যা সহ এটি একটি দুর্দান্ত উত্তর। আপনার যদি প্রয়োজন হয় তবে স্পেসগুলির জন্য অনুমতি দিন। .replace (/ [^ a-z0-9 \] / gi, '')
জো জনস্টন

82

অক্ষর শ্রেণি শব্দটি ব্যবহার করুন। নিম্নলিখিতটি একটি সমতুল্য ^[a-zA-Z0-9_]+$:

^\w+$

ব্যাখ্যা:

  • স্ট্রিং শুরু
  • \ যে কোনও শব্দের অক্ষর (এজেড, এজেড, 0-9, _)।
  • স্ট্রিং এর শেষ

/[^\w]|_/gআপনি যদি আন্ডারস্কোরের সাথে মেলে না চান তবে ব্যবহার করুন ।


20
\ ডাব্লু আসলে [a-zA-Z_0-9] এর সমতুল্য তাই আপনার RegEx আন্ডারস্কোরের সাথেও মেলে [_]
মার্টিন ব্রাউন


সত্য, পোস্ট হিসাবে কিউ এর কোনও কঠোর উত্তর নয়, তবে ঠিক আমি যা খুঁজছিলাম তা ..
প্রোটোটাইপ

দুঃখিত, তবে এটি আন্তর্জাতিক অক্ষরগুলির সাথে মেলে না, যেমন Ä
অ্যালেক্স মি

খুব খারাপ এটি আমার উচ্চারণগুলি সরিয়ে ফেলুন
মিগুয়েল

38
/^([a-zA-Z0-9 _-]+)$/

উপরের রেজেক্সটি একটি স্ট্রিংয়ের পাশে ফাঁকা স্থান এবং বিশেষ অক্ষরকে সীমাবদ্ধ করে .এটি কেবল এজেড, এজেড, 0-9, স্পেস, অ্যান্ডসোর এবং ড্যাশকে অনুমতি দেয়।


14
^\s*([0-9a-zA-Z]*)\s*$

বা, আপনি যদি সর্বনিম্ন একটি চরিত্র চান:

^\s*([0-9a-zA-Z]+)\s*$

স্কোয়ার বন্ধনী অক্ষরের একটি সেট নির্দেশ করে। ইনপুট শুরু। input হ'ল ইনপুটটির শেষ (বা আপনার বিকল্পগুলির উপর নির্ভর করে নতুন লাইন)। গুলি হল সাদা স্থান।

শ্বেতস্থান আগে এবং পরে optionচ্ছিক।

বন্ধনীগুলি হ'ল গ্রুপিং অপারেটর যা আপনাকে চাইলে তথ্যগুলি বের করার অনুমতি দেয়।

সম্পাদনা: character ডাব্লু অক্ষরের সেটটির আমার ভুল ব্যবহার সরিয়ে দেওয়া হয়েছে।


6

বৈধ আলফানিউমেরিক স্ট্রিং পরীক্ষা করার পরিবর্তে, আপনি কোনও অবৈধ অক্ষরের জন্য স্ট্রিংটি পরীক্ষা করে পরোক্ষভাবে এটি অর্জন করতে পারেন। কিছু মিলে যায় চেক করে তা করতে সম্পূরক বৈধ আলফানিউমেরিক স্ট্রিং এর।

/[^a-z\d]/i    

এখানে একটি উদাহরণ:

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

লজিকাল নন অপারেটরটি লক্ষ্য করুন isValid, যেহেতু আমি পরীক্ষা করছি যে স্ট্রিংটি মিথ্যা কিনা তা বৈধ কিনা whether


6

এটি কাজ করবে

^(?=.*[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]+)$

কৌণিকের মতো পরীক্ষা করতে পারে:

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

প্লাঙ্কার ডেমো

রেফার্ড: অ্যাঙ্গুলারজগুলিতে বর্ণমালার জন্য নিয়মিত প্রকাশ


4

আপনার প্রজেক্ট জুড়ে ব্যবহার করতে স্ট্রিং প্রোটোটাইপ প্রসারিত করুন

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

ব্যবহার:

    "I don't know what to say?".alphaNumeric();
    //Idontknowwhattosay

3

এই কোডগুলি আপনার SCRATCHPAD এ ইনপুট করুন এবং ক্রিয়াটি দেখুন।

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

2

দেখে মনে হচ্ছে অনেক ব্যবহারকারী এটি লক্ষ্য করেছেন যে এই নিয়মিত প্রকাশগুলি প্রায় নিশ্চিতভাবেই ব্যর্থ হবে যদি না আমরা ইংরেজিতে কঠোরভাবে কাজ করি। তবে আমি মনে করি এগিয়ে যাওয়ার একটি সহজ উপায় আছে যা এত সীমাবদ্ধ থাকবে না।

  1. আপনার সমস্ত স্ট্রিংয়ের একটি অনুলিপি UPPERCASE এ দিন
  2. সমস্ত ছোট হাতের মধ্যে একটি দ্বিতীয় অনুলিপি তৈরি করুন

এই স্ট্রিংগুলির সাথে মেলে এমন কোনও অক্ষর অবশ্যই প্রকৃতির বর্ণমালা নয়।

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

Allyচ্ছিকভাবে, আপনি 0 থেকে 9 সংখ্যা সন্ধান করেও সংখ্যাগুলি সনাক্ত করতে পারেন।


2

এটি ব্যবহার করে দেখুন ... আপনার ফিল্ড আইডিটি # নাম ... এজেড (এ টু জেড), এজেড (এ টু জেড), 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;
    });
});

2

জাভাস্ক্রিপ্ট কেবলমাত্র সংখ্যা, বর্ণমালা এবং বিশেষ অক্ষরগুলি গ্রহণ করতে

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>


1

এমনকি Gayan Dissanayakeনির্দেশিত চেয়ে ভাল ।

/^[-\w\s]+$/

এখন ^[a-zA-Z0-9]+$হিসাবে প্রতিনিধিত্ব করা যেতে পারে^\w+$

আপনি জায়গার পরিবর্তে to গুলি ব্যবহার করতে চাইতে পারেন । নোট করুন যে one গুলি কেবল একটি স্পেস অক্ষর নয়, সাদা স্থানের যত্ন নেয় care


1

আমার কাছে স্যামসং গ্যালাক্সি এ 10 এস 6.2-ইঞ্চ (2 জিবি, 32 জিবি রম) অ্যান্ড্রয়েড 9.0, (13 এমপি + 2 এমপি) + 8 এমপি ডুয়াল সিম 4000 এমএএইচ 4 জি এলটিই স্মার্টফোন - ব্ল্যাক (বিএফ 19) এর মতো স্ট্রিং রয়েছে

নীচে আমি যা করেছি তা হল:

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যা আমি চেয়েছিলাম।

এর চেয়ে ভাল সমাধান হতে পারে তবে এটিই আমার পক্ষে ভাল কাজ করতে পেল।


0

এই ধ্রুবক সংরক্ষণ করুন

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

-1

জ্যাকারি কেবলমাত্র সংখ্যা, বর্ণমালা এবং বিশেষ অক্ষরগুলি গ্রহণ করতে

<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>

1
jquery জাভাস্ক্রিপ্ট নয়
আরএসএম

হ্যাঁ। ধন্যবাদ উপরের কোডটি কাজ করছে আপনি রান কোড স্নিপেটে ক্লিক করে পরীক্ষা করতে পারবেন।
প্রণব ভাট

jquery একটি জাভাস্ক্রিপ্ট লাইব্রেরি
প্রণব ভাট

আমরা জাভাস্ক্রিপ্টের পরিবর্তে jquery ব্যবহার করতে পারি এটি সহজ হবে :)
প্রণব ভাট

আমি দুঃখিত আপনি ঠিক ছিলেন .. আমি জাভাস্ক্রিপ্ট দিয়ে অন্য পোস্ট করেছি! অসংখ্য ধন্যবাদ!
প্রণব ভাট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.