مطابقت عبارت منظم جاوااسکریپت با خط جدید پشت سر هم بدون بررسی
پس من این رشته را دارم:
function abc() {\n\n return def;\n}
و من این را استفاده میکنم:
string.match(/[^\r\n]+/g)
و با ۳ خط مطابقت دارد:
مسابقه ۱: تابع abc() {
مچ ۲: بازگشت def;
مسابقه ۳: }
اما یک تطبیق چهارم وجود ندارد که باید خط جدیدی باشد که پس از '{' هیچ کاراکتری نداشته باشد.
من دارم از وبسایت https://regex101.com/r/ALvFIN/1/ برای تست استفاده میکنم.
تنظیم برای طعم: ECMAScript
عبارت منظم: /[^\n]+/g
رشته آزمایشی:
function abc() {
return def;
}
کسی ایده ای دارد چطور می توان دوگانه \n\n را بدون هیچ کاراکتری روی خط ۲ به درستی تطبیق داد؟ من فضای سفید \s و \S را امتحان کرده ام اما درست نبود. دارم فکر می کنم باید راه حل جایگزینی پیدا کنم.
پاسخ شماره ۱
به نظر میرسد که میخواهید یک رشته شامل یک یا چند کاراکتر غیر از شکست خط یا یک خط خالی را مطابقت دهید.
این منطق به این معنی است که شما صرفاً میخواهید یک رشته را با یک دنباله شکست خط منفرد تقسیم کنید.
برای تطبیق شکستهای خط ASCII، CRLF، LF یا CR، میتوانید از /\r\n?|\n/ استفاده کنید.
برای همخوانی با هر توالی شکست خط یونیکد، میتوانید از /\n|[\n\f\u000b\u0085\u2028\u2029]/ استفاده کنید.
console.log("function abc() {\n\n return def;\n}".split(/\r\n?|\n/))
// Any Unicode line break sequence:
var rx = /\r\n|[\r\n\f\u000b\u0085\u2028\u2029]/;
console.log("function abc() {\n\n return def;\n}".split(rx))و اگر هنوز میخواهید از .match() استفاده کنید، کافی است یک جایگزین ^$ به عبارت منظم خود با فلگ /m اضافه کنید تا ^ و $ با شروع/پایان یک خط مطابقت داشته باشند:
console.log("function abc() {\n\n return def;\n}".match(/[^\r\n]+|^$/gm))پاسخ شماره ۲
اگر میخواهید رشته را به خطوط تشکیلدهنده آن تقسیم کنید، میتوانید از این استفاده کنید: /^.*$/gm. توجه داشته باشید گزینه m برای فعال کردن تطبیق چندخطی است.
