2016-08-30 8 views
6

Właśnie użyłem poniższej instrukcji w javascript do wyszukiwania określonego ciągu w jednej kolumnie i filtrowania rekordów w tabeli danych.javascript - Jak używać wyrażenia regularnego w ciągach JSON do wyszukiwania kolumny danych w JQuery?

term = $(this).val(); 
    table.column(2).search(term, true, false).draw(); 

Oto mój JSON ciąg:

[{"userid":"2315","location":"x","details":"{\"subject‌​s\": {\"English\": [\"meena\", \"teena\"]}, \"hours\": {\"2\"}}}", 
{"userid":"3009","location":"y","details":"{\"subjects\": {\"English\": [\"meena\"]}, \"hours\": {\"4\"}}}, 
{"userid":"3109","location":"z","details":"{\"English\": [\"suresh\", \"divya\"]}, \"hours\": {\"4\"}}, 
{"userid":"3209","location":"a","details":"{\"English\": [\"ramesh\", \"meena\"]}, \"hours\": {\"4\"}}, 
{"userid":"3309","location":"b","details":"{\"subjects\": {\"English\": [\"revathi\", \"meena\"]}, \"hours\": {\"4\"}}} 
] 

Chcesz dopasować każdą jedną wartość „English” przy użyciu regex i wyszukiwanie że ceni filtrować records.Something jak poniżej.

regex = '"English": ["'+ '.*' +term+'.*'; 
table.column(3).search(regex, false, false).draw(); 

Ale powyższe stwierdzenie nie działa.

Czy ktoś może zaproponować mi prawidłowy sposób napisania wyrażenia regularnego dla tego?

+1

nie wolno używać regex. Parsuj JSON do obiektu i filtruj go. –

+0

@ RoryMcCrossan, możesz dać mi prosty przykład? Jestem bardzo nowy w tym. – Nithya

Odpowiedz

0
  1. Jeśli metoda search obsługuje wyrażenia regularne i trzeba robić absolutnie czegoś takiego, przekazać coś podobnego new RegExp('"English": \\["'+ '.*' +term+'.*', 'gi').

  2. Jak zasugerowano w komentarzach, nie jest dobrym pomysłem traktowanie JSON jako napisu. Nadmiarowe białe znaki lub znaki specjalne ze znakami specjalnymi mogą powodować błędne odpowiedzi. Użytkownik będzie lepiej parsowania JSON i szukają w miarę potrzeb, np .:

    var term = ...; 
    for (var i = 0, l = rows.length; i < l; i++) { 
        var row = rows[i]; 
        var user = JSON.parse(row); 
        var details = user.details && JSON.parse(user.details); 
        if (details.English && details.English.indexOf(term) !== -1) { 
         // there is the searched term in the users' details 
        } 
    } 
    
+0

Hi..' regex = new RegExp ('"English": ["' + '. *' + Term + '. *', 'Gi');" to oświadczenie rzucające wyjątek. Nie wiem, co tu jest nie tak, – Nithya

+0

Edytowałem odpowiedź, symbol '[' musi zostać zmieniony znakiem '\\', ponieważ '[bez \\ 'deklaruje klasy znaków –

+0

W drugim rozwiązaniu, co jest" wiersze "? przypisać ciągiem json? – Nithya

Powiązane problemy