I'm trying to get some JSON data and find some regular expressions in it. My JSON data is HTML.
Here is code:
function clearArrows(str){
return str.replace(/<</g,"<<").replace(/>>/g,">>").replace(/<\/</g,"<\/<");
}
function explodeCond(str){
var regEx = /<<.*?>>.*?<\/<.*?>>/g;
var tagMatches = str.match(regEx);
var totalArr = [];
for(var i = 0; i < tagMatches.length; i++){
var tagMatch = tagMatches[i];
var regExStart = /<<.*?>>/g;
var regExEnd = /<\/<.*?>>/g;
var startTag = tagMatch.match(regExStart);
var endTag = tagMatch.match(regExEnd);
var replaced = tagMatch.replace(regExStart,'').replace(regExEnd,'');
var obj = {
start: startTag[0],
contain: replaced,
end: endTag[0]
};
totalArr.push(obj);
//console.log(replaced);
}
return totalArr;
}
var str = "<p>(TAM ZAMANLI)</p><p><strong>Madde 1 - TARAFLAR</strong></p><p>Aşağıda isim (unvan) ve adresleri yazılı bulunan işveren ile işçi arasında, tamamen kendi istek ve serbest iradeleri ile ve belirtilen şartlarla “Belirsiz Süreli İş Sözleşmesi” yapılmıştır. Taraflar bundan sonra “işveren” ve “işçi” olarak anılacaktır.</p><p><strong>1.1-</strong><br>İşveren:{{1}},<br>{{2}}<br><strong>1.2-</strong><br>İşçi:{{3}} ,<br>{{4}}</p><p> </p><p>Her iki taraf da belirtilen adreslerini tebligat adresi olarak kabul etmişlerdir. Adres değişiklikleri usulüne uygun şekilde karşı tarafa tebliğ edilmedikçe en son bildirilen adrese yapılacak tebliğ ilgili tarafa yapılmış sayılır.</p><p> </p><p><strong>Madde 2 - SÖZLEŞMENİN SÜRESİ</strong></p><p>İş bu sözleşme ,{{5}} tarihinde başlamış olup, belirsiz sürelidir.</p><p>İşçi deneme süreli çalıştırılacaktır. Deneme süresi olması durumunda deneme süresi en fazla 2 ay olacaktır. Deneme süresi içinde taraflar iş sözleşmesini bildirim süresine gerek olmaksızın ve tazminatsız feshedebilir.</p><p> </p><p><strong>Madde 3 - İŞÇİNİN ÇALIŞMA YERİ</strong></p><p>İşçi, işin niteliğine uygun olarak işverenin belirlediği bir konumda çalışacaktır.</p><p> </p><p><strong>Madde 4- SÖZLEŞME KONUSU VE YAPILACAK İŞ</strong></p><p>Sözleşmeye konu olan, İşçi'nin iş görme borcu kapsamındaki işi kısaca şu şekilde tanımlanmıştır:<br>{{6}}</p><p>İşin teknik özellik ve diğer ayrıntıları sözleşmeye ek belge olarak ayrıca düzenlenmiştir.<br><br>İşçi, bu sözleşmede belirlenen yükümlülükleri hukuk müşaviri unvanı ile yerine getirecektir.</p><p> <<{{7}}:Haftalık>><br>Burası İşçinin ücret alma periyodu haftalık seçilmesi durumunda gözükecektir. <br></<{{7}}:Haftalık>></p><p><br></p><p><strong>Madde 5- ÜCRET VE ÖDEMEr</strong></p><p>A- İşçi işbu sözleşme kapsamında{{7}}brüt{{8}}maaş karşılığı yapacaktır.<br> </p><p>B- İşçinin sözleşmede yazılı ücreti kural olarak imza karşılığı kendisine ödenir veya banka hesabına yatırılır. Ancak işçinin yazılı talebi ile belirlediği ve bu talebin altındaki tatbiki imzası bulunan yasal temsilcisine de yine imzası karşılığında ödenebilir. Kural olarak işçinin ücretinin ödeme dönemleri şu şekilde belirlenmiştir. Her Ayın{{9}}.günü<br> </p><p>C-Performans geliştirme planlaması sürecinde üzerinde anlaşmaya varılan amaç ve hedeflere dayalı olarak, İşçiye maaş ödemesi dışında performans değerlendirme sonucuna bağlı olarak prim ödemesi söz konusu değildir.<br> </p><p>D-İşveren, dönem ve şartlar dahilinde işçiye ikramiye bedeli ödemeyi taahhüt <u>etmemiştir.</u></p><p> </p>";
var b = $('#main').html();
console.log(explodeCond(str));
At here clearArrows() converts the <
and >
to carets in the data which comes from base64 decoded JSON data.
explodeCond() is trying to match <<{{1}}:something>>Other Things</<{{1}}:something>>
regExps.
I'm getting the HTML string with JSON. I'm logging it to console, and it seems like that:
.....
yerine getirecektir.</p>
<p><<{{7}}:Haftalık>><br>
Burası İşçinin ücret alma periyodu haftalık seçilmesi durumunda gözükecektir. <br></<{{7}}:Haftalık>></p><p><br></p>
<p><strong>Madde 5- </strong></p>
.....
When I try it on str
variable, it works fine. But when I try to use it on data which comes from decoded JSON or in HTML element, it gives 'Uncaught TypeError: Cannot read property 'length' of null' error. I don't know why does it happen.
Here is also codepen