आप इस (सिर्फ एक उल्लिखित विचार, कोई कोड) कर सकता है। अपरिवर्तनीय भागों के लिए निश्चित तारों का उपयोग करें, और संशोधित भागों के लिए [\s\S]*?
का उपयोग करें। अपने regex एंकर करने के लिए ^
और $
का उपयोग करें।
/^This is fixed text\. Now something editable:[\s\S]*?Now fixed again\.$/
अब keyup
घटना पर प्रतिक्रिया है, और शायद अन्य घटनाओं के साथ-साथ (जैसे paste
)।
प्रत्येक प्रासंगिक घटना के साथ, रेगेक्स अभी भी मेल खाता है तो जांच करें।
यदि ऐसा नहीं होता है, तो ईवेंट रद्द करें।
प्रभावी रूप से, इसे रेगेक्स में शाब्दिक भागों में संशोधनों को रोकना चाहिए और इस प्रकार आपके पाठ के कुछ हिस्सों को केवल पढ़ने के लिए ही बनाना चाहिए।
फॉर्म पोस्ट के बाद सर्वर पक्ष पर स्ट्रिंग का परीक्षण करना न भूलें - कभी भरोसा न करें कि ग्राहक अमान्य मान नहीं भेज सकता है।
संपादित
आप एक regex बोली समारोह का उपयोग कर सकते गतिशील तार से कि regex निर्माण करने के लिए, यह आप परेशानी का एक बहुत बचाने के लिए करना चाहिए।
function regexQuote(s) { return s.replace(/[\[\]^$*+?{}.|\\]/g, "\\$&") }
उपयोग
var re = new Regex(
"^" +
[regexQuote(fixedPart1), regexQuote(fixedPart2)].join("[\\s\\S].*?")
+ "$"
);
गैर संपादन योग्य सामग्री पाठ के अलग-अलग भागों में उपलब्ध नहीं होगा, या यह तय हो जाएगा (पूर्व: शुरुआत में या अंत में)? –
@ मोहम्मद मेरी विशिष्ट स्थिति को देखते हुए आदर्श समाधान में संपादन योग्य पाठ के बैच होंगे। उन हिस्सों को कुछ मार्करों के बीच संलग्न किया जा सकता है (उदाहरण के लिए @ {}) –
हाय केन्सई, क्या आपने समाधान को कार्यान्वित किया? मैं इसके बारे में सुनकर उत्सुक हूं क्योंकि मैं अब ऐसा करने की कोशिश कर रहा हूं। धन्यवाद! – user418775