নিয়মিত এক্সপ্রেশন: কোনও অক্ষর যা কোনও চিঠি বা সংখ্যা নয়


112

আমি নিয়মিত প্রকাশটি বের করার চেষ্টা করছি যা কোনও অক্ষর বা সংখ্যা নয় এমন কোনও চরিত্রের সাথে মেলে। তাই অক্ষর যেমন (, @, £, () ইত্যাদি ...

একবার পাওয়া গেলে আমি এটিকে ফাঁকা স্থান দিয়ে প্রতিস্থাপন করতে চাই।

কোন পরামর্শ.

উত্তর:


165

চিঠি বা সংখ্যা ব্যতীত অন্য কোনও কিছুর সাথে মিল রাখতে আপনি এটি ব্যবহার করতে পারেন:

[^a-zA-Z0-9]

এবং প্রতিস্থাপন করতে:

var str = 'dfj,dsf7lfsd .sdklfj';
str = str.replace(/[^A-Za-z0-9]/g, ' ');

17
\wশব্দ অক্ষরের জন্য এবং ঠিক একইরকম [a-zA-Z0-9_](লক্ষ্য করুন যে আন্ডারস্কোরটিকে একটি শব্দ চরিত্র হিসাবে বিবেচনা করা হয়।) ... সুতরাং সংক্ষিপ্তরূপটি হবেstr.replace(/[^\w]/g, ' ')
জোয়েল মেলন

তবে এতে অনেক ইউনিকোড চিঠিও অন্তর্ভুক্ত থাকবে! ইউনিকোড চিঠিগুলি বাদ দেওয়ার কোনও উপায় আছে?
ক্লাইট টেইলার

1
ইউনিকোড অক্ষর অন্তর্ভুক্ত করতে, আপনি [^ \ p {L} 0-9]
ডেভ

@Dave: 2018 এর হিসাবে আপনি পারেন না polyfill ছাড়া, দৃশ্যত ... stackoverflow.com/questions/280712/javascript-unicode-regexes
নিকোলে

কোনও জায়গার পরিবর্তে কোনও জায়গা আছে ... চিহ্নিত করে চিহ্নিত চরিত্রটি অনুসরণ করে "\" দিয়ে প্রতিস্থাপন করবেন? এটির মতো: এই ডিএফজে, dsf7lfsd .sdklfj এই dfj make, dsf7lfsd \ .sdklfj এ তৈরি করুন?
ক্রেজিএসপি

38

এই নিয়মিত প্রকাশটি এমন কোনও কিছুর সাথে মেলে যা অক্ষর, অঙ্ক বা আন্ডারস্কোর ( _) অক্ষর নয়।

\W

জাভাস্ক্রিপ্ট উদাহরণস্বরূপ:

"(,,@,£,() asdf 345345".replace(/\W/g, ' '); // Output: "          asdf 345345"

আমি বিশ্বাস করি তিনি / (_ | \ ডাব্লু) / জি খুঁজছেন কোনও কিছুর সাথে কোনও অঙ্ক বা অক্ষরের সাথে মিল নেই (ইংরেজি ভাষা)
কেনেবেক

@ এসবিএমএক্সএক্স আমি এই অক্ষরগুলি &, (,) ব্যতীত অন্য সকলকে প্রতিস্থাপন করতে চাই। আমি কীভাবে বর্তমান রেজেক্সে এই শর্তটি যুক্ত করতে পারি।
কে পাল

17

আপনি খুঁজছেন:

var yourVar = '1324567890abc§$)%';
yourVar = yourVar.replace(/[^a-zA-Z0-9]/g, ' ');

এটি সমস্ত অ-অক্ষর অক্ষরকে একটি স্থানের সাথে প্রতিস্থাপন করে।

শেষে থাকা "জি" সমস্ত উপস্থিতি প্রতিস্থাপন করে।

পরিবর্তে AZ (ছোট হাতের) এবং জেড (বড় হাতের) উল্লেখ এর আপনার কাছে ব্যবহার করতে পারেন ইন-কেস সংবেদনশীল বিকল্প: /[^a-z0-9]/gi


এটি পাশাপাশি ফাঁকা জায়গাগুলি মেলে? আমার রাখার জন্য জায়গা দরকার। ধন্যবাদ।
জেমস জেফারি

স্পেস অক্ষরগুলি মিলবে তবে তারপরে স্থানের অক্ষর দ্বারা প্রতিস্থাপন করা হবে, ফলস্বরূপ এটি তাদের একা ফেলে রাখবে (একটি স্থান একটি স্থান থাকবে))
জিম্বো

9

এটি বেশ দেরিতে হয়েছে, তবে যেহেতু কোনও গ্রহণযোগ্য উত্তর নেই তাই আমি যেটি সবচেয়ে সহজ বলে মনে করি তা সরবরাহ করতে চাই: ডি - সমস্ত অ-অঙ্কের অক্ষরের সাথে মেলে।

var x = "123 235-25%";
x.replace(/\D/g, '');

এক্স এর ফলাফল: "12323525"

Https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions দেখুন


5

স্ট্রিংরেপ্লেস (/ [^ \ w] /) করার চেষ্টা করুন; এটি আপনার স্ট্রিং থেকে সমস্ত অ-বর্ণমালা এবং সংখ্যাগুলি প্রতিস্থাপন করবে!

সম্পাদনা 1: str.replace(/[^\w]/g, ' ')


2
একটি কাজের উত্তর হবে str.replace(/[^\w]/g, ' ')। আপনি যদি /gপতাকাটি অন্তর্ভুক্ত না করেন তবে এটি কেবল প্রথম উপস্থিতিটি প্রতিস্থাপন করবে। এবং যদি আপনি কোনও প্রতিস্থাপনের স্ট্রিংটি সংজ্ঞায়িত না করেন তবে এখানে একটি ফাঁকা জায়গা রয়েছে ' ', এটি undefinedপুরো জায়গা জুড়ে প্রতিস্থাপন করবে । শেষ পর্যন্ত আন্ডারস্কোরগুলি প্রতিস্থাপন করা হবে না কারণ তারা মিলছে \w। এই উত্তরটি নিখুঁত ফিট নয়।
জুলিয়েন লিরোকন

3

অন্যদের দেখার জন্য:

someString.replaceAll("([^\\p{L}\\p{N}])", " ");

কোনও নন-লেটার এবং অ-সংখ্যাবিহীন ইউনিকোড অক্ষর মুছে ফেলবে।

উৎস


আমি নিশ্চিত না যে দুটি উপগ্রহটি কোথা থেকে এসেছে, তবে জাভাস্ক্রিপ্টে (যা এই প্রশ্নটি নিয়ে রয়েছে) তেমন কোনও নেই replaceAll, এবং \p{..}সম্পত্তি পলায়নগুলি ব্যাপকভাবে প্রয়োগ করা হয়নি।
নিকোলে

3
  • শুধুমাত্র চিঠিপত্রের সাথে মেলে /[A-Z]/ig
  • চিঠি না কিছু মিল /[^A-Z]/ig
  • কেবল ম্যাচ নম্বর /[0-9]/g বা/\d+/g
  • নম্বর না কিছু কিছু মিল /[^0-9]/g বা/\D+/g
  • নম্বর বা চিঠি নয় এমন কিছু মিলান /[^A-Z0-9]/ig

অন্যান্য সম্ভাব্য নিদর্শন রয়েছে


2

আপনি কি চেষ্টা str = str.replace(/\W|_/g,'');করেছেন এটি কোনও অক্ষর ছাড়াই একটি স্ট্রিং ফিরিয়ে দেবে এবং আপনি পাইপ বারের পরে কোনও বিশেষ অক্ষর নির্দিষ্ট করতে পারেন| সেগুলি ধরতে ।

var str = "1324567890abc§$)% John Doe #$@'.replace(/\W|_/g, ''); এটা ফিরে আসবে str = 1324567890abcJohnDoe

অথবা অঙ্ক এবং অক্ষর সন্ধান করুন এবং এগুলি খালি স্ট্রিংয়ের জন্য প্রতিস্থাপন করুন (""):

var str = "1324567890abc§$)% John Doe #$@".replace(/\w|_/g, ''); এটা ফিরে আসবে str = '§$)% #$@';


1

বর্ণচিহ্ন বা সংখ্যা বা চিঠি ব্যতীত অন্য কোনও কিছুকে যেমন ডায়াক্রিটিক্সের সাথে মেলে éআপনি এটি চেষ্টা করতে পারেন:

[^\wÀ-úÀ-ÿ]

এবং প্রতিস্থাপন করতে:

var str = 'dfj,dsf7é@lfsd .sdklfàj1';
str = str.replace(/[^\wÀ-úÀ-ÿ]/g, '_');

ডায়াক্রিটিক্স সমর্থন সহ শীর্ষ পোস্ট দ্বারা অনুপ্রাণিত

উৎস

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