একটি রেগেক্সের সাথে একটি ফরোয়ার্ড স্ল্যাশ মিলছে


90

আমার জাভাস্ক্রিপ্টের সাথে খুব বেশি অভিজ্ঞতা নেই তবে আমি একটি ট্যাগ সিস্টেম তৈরি করার চেষ্টা করছি যা ব্যবহার করার পরিবর্তে @বা #ব্যবহার করবে /

var start = /#/ig; // @ Match

var word = /#(\w+)/ig; //@abc Match

আমি এর /পরিবর্তে কীভাবে একটি ব্যবহার করতে পারি #। আমি চেষ্টা করেছিলাম var slash = '/'এবং যুক্ত করেছি + slash +, কিন্তু এটি ব্যর্থ হয়েছে।


4
শিরোনাম পরিবর্তন করুন। এবং আপনি সত্যিই কি করতে চেষ্টা করছেন? আপনার প্রশ্নটি পড়ার পরেও আমার কোনও ধারণা নেই।
OptimusCrime

আমি নিশ্চিত নই যে আমি বুঝেছি.
জন স্ট্রিকলার

উত্তর:


123

আপনি এটি এড়াতে পারেন।

/\//ig; //  Matches /

অথবা কেবল সূচিপত্র ব্যবহার করুন

if(str.indexOf("/") > -1)

আপনাকে ধন্যবাদ বেন, আমি এটিও চেষ্টা করেছিলাম কিন্তু শেষে আমি আরও একটি যুক্ত করেছি।
আই ব্রাজিলিয়ান 2



6

নিয়মিত অভিব্যক্তিগুলিতে, "/" হ'ল একটি বিশেষ চরিত্র যা এড়িয়ে যাওয়ার দরকার হয় (একে একে এর আগে এটি পতাকাবিদ্ধ করে ged এটি কোনও বিশেষ ক্রিয়াকলাপটি পরিবেশন করতে পারে তা উপেক্ষা করার আগে)।

আপনার যা প্রয়োজন তা এখানে:

var word = /\/(\w+)/ig; //   /abc Match

এখানে RegEx বিশেষ অক্ষরগুলি পড়ুন: http://www.regular-expressions.info/characters.html


17
"/" নিয়মিত অভিব্যক্তিতে কোনও বিশেষ চরিত্র নয়। তবে এটি জাভাস্ক্রিপ্টের একটি বিশেষ চরিত্র যা সীমানা নির্ধারণ করে যেখানে রেজেক্স শুরু হয় এবং শেষ হয়।
sokkyoku

5

আপনি কোনও অক্ষর গোষ্ঠীতে এটি বন্ধ করে ফরোয়ার্ড স্ল্যাশের বিশেষ জেএস হ্যান্ডলিংয়ের কাজ করতে পারেন:

const start = /[/]/g;
"/dev/null".match(start)     // => ["/", "/"]

const word = /[/](\w+)/ig;
"/dev/null".match(word)      // => ["/dev", "/null"]

4
+1, অব্যাহতি এড়ানোর জন্য একটি অক্ষর সেট ব্যবহার করে RegEx একটি অক্ষর দীর্ঘায়িত করে, তবে এটি পঠনযোগ্যতার জন্য এটি মূল্যবান: /[/]/চাক্ষুষরূপে চলমান ডিলিমিটারের চেয়ে আরও স্পষ্টত পৃথক করে /\//
ডেম পিলাফিয়ান

4
/[/]/পড়া এবং কাজ করা সহজ, তবে দুর্ভাগ্যক্রমে, কিছু RegEx যাচাইকারক এমনকি একটি চরিত্রের গ্রুপের মধ্যেও "একটি অব্যাহতভাবে ডিলিমিটারকে ব্যাকস্ল্যাশ দিয়ে পালাতে হবে" বলে প্রতিবেদন করবে । সুতরাং, আমি আবার কুরুচিপূর্ণ ফর্মটিতে ফিরে এসেছি । /\//
ডেম পিলাফিয়ান


1

আমার জন্য, আমি /সি # তে একটি তারিখে ম্যাচ করার চেষ্টা করছিলাম । আমি এটি ব্যবহার করেই করেছি (\/):

string pattern = "([0-9])([0-9])?(\/)([0-9])([0-9])?(\/)(\d{4})";
string text = "Start Date: 4/1/2018";

Match m = Regex.Match(text, pattern);

if (m.Success) 
{ 
    Console.WriteLine(match.Groups[0].Value);  // 4/1/2018
}
else
{
    Console.WriteLine("Not Found!");
}

জাভাস্ক্রিপ্ট একইভাবে ব্যবহার করতে সক্ষম হওয়া উচিত (\/)


ডাউনভোটার, বোঝানোর যত্ন আছে? এটি কাজ করে এবং আমি এটি পরীক্ষার মাধ্যমে প্রমাণ করেছি।
vapcguy

4
আমি মনে করি এটি দুর্ঘটনা ছিল, দুঃখিত। আমি এটিকে পূর্বাবস্থায় ফেলার চেষ্টা করেছি, তবে এটি বলে যে উত্তরটি সম্পাদনা না করা হলে আমার ভোট লক হয়ে গেছে। আমি কেবল দেখতে পাচ্ছি যে আপনার কাছে ক্যাপচার গ্রুপগুলির একটি লগ রয়েছে যা আপনি ব্যবহার করছেন বলে মনে হয় না। সব কারণ বন্ধনে আছে কেন কোনও কারণ?
রায়ান কুইন

4
@ রায়ানকুইন ব্যাখ্যাটির জন্য ধন্যবাদ। আমি প্রত্যাশা করছিলাম এমন একটি নির্দিষ্ট সংখ্যার প্রতিনিধিত্ব করার জন্য আমি জিনিসগুলি একত্রে গোষ্ঠীগুলিতে ব্যবহার করেছি het এটি যাচাই করার জন্য আমি যে সাইটে ব্যবহার করছি সেগুলিতেও এটিগুলির প্রয়োজন হবে বলে মনে হয়েছিল: regexr.com আমি আমার পোস্ট সম্পাদনা করেছি (সবেমাত্র একটি স্থান যুক্ত করেছি), আপনি চাইলে আপনার ডাউনওয়েট সরিয়ে ফেলতে সক্ষম হওয়া উচিত।
vapcguy

0

যখন আহরণের দ্বারা সীমায়িত টেক্সট আমি পূর্বোল্লিখিত, এর সাথে সম্পর্কিত দুই সমস্যাগুলির সম্মুখীন \এবং /, এবং একটি সমাধান পাওয়া যে ফিট উভয় ব্যবহার ছাড়া অন্য new RegExpযা প্রয়োজন \\\\শুরুতে। এই অনুসন্ধানগুলি ক্রোম এবং আইই 11 এ রয়েছে।

নিয়মিত প্রকাশ

/\\(.*)\//g

কাজ করে না. আমি মনে করি //পালানোর চরিত্র সত্ত্বেও মন্তব্যটির শুরু হিসাবে এটি ব্যাখ্যা করা হয়েছে। নিয়মিত অভিব্যক্তি (সাধারণভাবে না হলেও আমার ক্ষেত্রে সমানভাবে কার্যকর)

/\b/\\(.*)\/\b/g

কাজ করে না। আমি মনে করি দ্বিতীয়টি /পালানোর চরিত্র সত্ত্বেও নিয়মিত প্রকাশটি বন্ধ করে দেয়।

আমার জন্য কাজ করে উপস্থাপিত করার /যেমন \x2Fযার হেক্সাডেসিমেল উপস্থাপনা, /। আমি মনে করি এটি ব্যবহারের চেয়ে আরও দক্ষ এবং বোধগম্য new RegExp, তবে অবশ্যই হেক্স কোড সনাক্ত করতে এটির একটি মন্তব্য দরকার।


0

ফরোয়ার্ড স্ল্যাশ একটি বিশেষ চরিত্র তাই, এটি কাজ করতে আপনাকে ফরোয়ার্ড স্ল্যাশের আগে একটি ব্যাকস্ল্যাশ যুক্ত করতে হবে

$patterm = "/[0-9]{2}+(?:-|.|\/)+[a-zA-Z]{3}+(?:-|.|\/)+[0-9]{4}/";

আপনি / যেখানে এইভাবে অনুসন্ধানের প্রতিনিধিত্ব করেন

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