उदाहरण के लिए:
function(input){
var testVar = input;
string = ...
string.replace(/ReGeX + testVar + ReGeX/, "replacement")
}
लेकिन यह निश्चित रूप से काम नहीं कर रहा है :) क्या ऐसा करने का कोई तरीका है?
उदाहरण के लिए:
function(input){
var testVar = input;
string = ...
string.replace(/ReGeX + testVar + ReGeX/, "replacement")
}
लेकिन यह निश्चित रूप से काम नहीं कर रहा है :) क्या ऐसा करने का कोई तरीका है?
जवाबों:
const regex = new RegExp(`ReGeX${testVar}ReGeX`);
...
string.replace(regex, "replacement");
कुछ टिप्पणियों के अनुसार, यह ध्यान देना महत्वपूर्ण है कि आप कर सकते हैं कि भागने चर अगर वहाँ दुर्भावनापूर्ण सामग्री के लिए क्षमता है (उदाहरण के लिए चर उपयोगकर्ता इनपुट से आता है)
2019 में, यह आमतौर पर टेम्पलेट स्ट्रिंग का उपयोग करके लिखा जाएगा, और उपरोक्त कोड को अपडेट किया गया है। मूल उत्तर था:
var regex = new RegExp("ReGeX" + testVar + "ReGeX");
...
string.replace(regex, "replacement");
regex
अभिव्यक्ति में एक देश कोड डायनामिक सेट करना है तो मुझे क्या करना है
/\w+\//i
बन जाता हैnew RegExp("\\w+/", "i")
आप RegExp ऑब्जेक्ट का उपयोग कर सकते हैं:
var regexstring = "whatever";
var regexp = new RegExp(regexstring, "gi");
var str = "whateverTest";
var str2 = str.replace(regexp, "other");
document.write(str2);
फिर आप regexstring
किसी भी तरह से निर्माण कर सकते हैं।
आप इसके बारे में और अधिक यहाँ पढ़ सकते हैं ।
जावास्क्रिप्ट में एक चर से एक नियमित अभिव्यक्ति बनाने के लिए, आपको RegExp
एक स्ट्रिंग पैरामीटर के साथ कंस्ट्रक्टर का उपयोग करने की आवश्यकता होगी ।
function reg(input) {
var flags;
//could be any combination of 'g', 'i', and 'm'
flags = 'g';
return new RegExp('ReGeX' + input + 'ReGeX', flags);
}
बेशक, यह एक बहुत ही भोली मिसाल है। यह मानता है कि input
नियमित अभिव्यक्ति के लिए ठीक से बच गया है। यदि आप उपयोगकर्ता-इनपुट के साथ काम कर रहे हैं, या विशेष वर्णों से मेल खाने के लिए इसे और अधिक सुविधाजनक बनाना चाहते हैं, तो आपको विशेष वर्णों से बचना होगा :
function regexEscape(str) {
return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')
}
function reg(input) {
var flags;
//could be any combination of 'g', 'i', and 'm'
flags = 'g';
input = regexEscape(input);
return new RegExp('ReGeX' + input + 'ReGeX', flags);
}
ReGeX
पाठ को हटा दूं । इसलिए मैंने इस्तेमाल किया:return new RegExp(input, flags);
यदि आप es6 टेम्पलेट का उपयोग कर रहे हैं, तो शाब्दिक विकल्प हैं ...
string.replace(new RegExp(`ReGeX${testVar}ReGeX`), "replacement")
^[^\s]{${4},${32}}$
); निर्यात कांस्ट वैध `` `
आप हमेशा स्ट्रिंग के रूप में नियमित अभिव्यक्ति दे सकते हैं, अर्थात "ReGeX" + testVar + "ReGeX"
। आपको संभवतः अपने स्ट्रिंग (जैसे, दोहरे उद्धरण) के अंदर कुछ पात्रों से बचना होगा, लेकिन अधिकांश मामलों के लिए यह समकक्ष है।
आप RegExp
झंडे को पास करने के लिए कंस्ट्रक्टर का उपयोग कर सकते हैं ( डॉक्स देखें )।
आप दो तरीकों में से एक में JS में नियमित अभिव्यक्ति बना सकते हैं:
/ab{2}/g
new RegExp("ab{2}", "g")
।नियमित अभिव्यक्ति शाब्दिक स्थिर हैं, और इसका उपयोग चर के साथ नहीं किया जा सकता है। यह कंस्ट्रक्टर का उपयोग करके प्राप्त किया जा सकता है। RegEx कंस्ट्रक्टर का फ्रैक्चर है
new RegExp(regularExpressionString, modifiersString)
आप regularExpressionString के भाग के रूप में चर एम्बेड कर सकते हैं। उदाहरण के लिए,
var pattern="cd"
var repeats=3
new RegExp(`${pattern}{${repeats}}`, "g")
यह पैटर्न के किसी भी रूप से मेल खाएगा cdcdcd
।
यहां एक बहुत ही बेकार फ़ंक्शन है जो विशिष्ट वर्णों द्वारा लिपटे मूल्यों को वापस करता है। :)
jsfiddle: https://jsfiddle.net/squadjot/43agwo6x/
function getValsWrappedIn(str,c1,c2){
var rg = new RegExp("(?<=\\"+c1+")(.*?)(?=\\"+c2+")","g");
return str.match(rg);
}
var exampleStr = "Something (5) or some time (19) or maybe a (thingy)";
var results = getValsWrappedIn(exampleStr,"(",")")
// Will return array ["5","19","thingy"]
console.log(results)
स्वीकृत उत्तर मेरे लिए काम नहीं करता है और एमडीएन उदाहरणों का पालन नहीं करता है
उपरोक्त लिंक में 'विवरण' अनुभाग देखें
मैं निम्नलिखित के साथ चलूँगा जो मेरे लिए काम कर रहा है:
let stringThatIsGoingToChange = 'findMe';
let flagsYouWant = 'gi' //simple string with flags
let dynamicRegExp = new RegExp(`${stringThatIsGoingToChange}`, flagsYouWant)
// that makes dynamicRegExp = /findMe/gi
केवल पहले स्ट्रिंग चर तैयार करना आवश्यक है और फिर इसे RegEx में परिवर्तित करें।
उदाहरण के लिए:
आप जोड़ना चाहते हैं minLength
और MaxLength
चर के साथ RegEx:
function getRegEx() {
const minLength = "5"; // for exapmle: min is 5
const maxLength = "12"; // for exapmle: man is 12
var regEx = "^.{" + minLength + ","+ maxLength +"}$"; // first we make a String variable of our RegEx
regEx = new RegExp(regEx, "g"); // now we convert it to RegEx
return regEx; // In the end, we return the RegEx
}
अब यदि आप मान बदलते हैं MaxLength
या MinLength
, यह सभी RegExs में बदल जाएगा।
उपयोगी होने की उम्मीद है। मेरी अंग्रेजी के बारे में भी खेद है।