ho bisogno di filtrare una raccolta di stringhe basato su una query piuttosto complesso - nella sua "prima" forma che assomiglia a questo:Javascript regex pattern match più stringhe (AND, OR) contro singola stringa
nano* AND (regulat* OR *toxic* OR ((risk OR hazard) AND (exposure OR release)))
un esempio di una delle stringhe per abbinare contro:
Workshop on the Second Regulatory Review on Nanomaterials, 30 January 2013, Brussels
così, ho bisogno di abbinare utilizzando AND OR e caratteri jolly - così, suppongo che avrò bisogno di usare una regex in JavaScript.
Ho tutto in loop in modo corretto, il filtraggio e in genere di lavoro, ma sono sicuro al 100% il mio regex è sbagliato - e alcuni risultati sono stati omessi a torto - qui è:
/(nano[a-zA-Z])?(regulat[a-zA-Z]|[a-zA-Z]toxic[a-zA-Z]|((risk|hazard)*(exposure|release)))/i
Qualsiasi aiuto sarebbe essere molto apprezzato - non posso davvero astrarre la mia mente correttamente per capire questa sintassi!
UPDATE:
Poche persone sono sottolineare l'importanza del l'ordine in cui si costruisce la regex, ma non ho alcun controllo sulle stringhe di testo che verrà effettuata la ricerca, quindi ho bisogno di trovare una soluzione che possa funziona indipendentemente dall'ordine o da entrambi.
UPDATE:
Alla fine utilizzata una soluzione PHP, a causa della disapprovazione di Twitter API 1.0, vedere pastebin per esempio di funzione (lo so che è meglio per incollare il codice qui, ma non c'è un sacco ...):
funzione: http://pastebin.com/MpWSGtHK utilizzo: http://pastebin.com/pP2AHEvk
Grazie per tutto l'aiuto
Si potrebbe desiderare di provare [un live strumento di test RegExp] (http://www.gethifi.com/tools/regex). – Barney
Nella stringa di esempio, 'nano' viene dopo 'normativa', ma nella tua espressione regolare, è il contrario. C'è qualche schema atteso in questo modo che uno verrà sempre prima dell'altro? Alcuni altri esempi potrebbero aiutare a spiegare le vostre esigenze. –
@Barney - un buon consiglio, ecco come sono arrivato a questo punto –