Regex per estrarre i primi 10 caratteri di una stringa

Ci sono due scenari

Primo caso:

Ho una stringa HTML per esempio,

var str1="hello how are you

how to extract the first 10 characters of a htmlstring without losing the html of the string

";

Devo estrarre i primi 10 caratteri di una stringa senza perdere l’html. In modo che l’output previsto è

 hello how a... 

Secondo caso:

Ho una semplice stringa come sotto

 var str1="hello how are you.how to extract the first 10 characters of a htmlstring without losing the html of the string"; 

Devo estrarre i primi 10 caratteri di una stringa. In modo che l’output previsto è

 hello how a... 

Voglio un’espressione regolare che potrebbe essere applicata per entrambi questi casi.

Sono nuovo di regex .. Ho provato molto, ma non ho alcun codice funzionante in modo che potrei postarlo qui.Per favore aiuto.

Alla luce della tua domanda riformulata ;

Regexp non è un buon strumento per la gestione di html.

Il modo corretto è analizzare il DOM. Jack ne dà un esempio, ma partendo dal presupposto che il markup che vuoi mantenere sia il primo figlio del nodo che stai guardando.

La domanda I link sopra indica che questo non è il caso. Tuttavia, la soluzione di Jack può essere adattata per gestire l’annidamento arbitrario. Lo faccio semplicemente contando i caratteri dei nodes fino a raggiungere il punto di interruzione. Quindi modificando in modo ricorsivo il nodo finale. Finalmente cancello tutti i nodes che si verificano dopo che è stato trovato il numero richiesto di caratteri.

 function getNodeWithNChars(capture,node) { var len=node.childNodes.length; var i=0; var toRemove=[]; for(;i 

Esempio di invocazione della funzione di cui sopra;

 console.log(getNChars(25,"hello how are you how to extract the first 25 characters of a htmlstring without losing the html of the string")); 

prova questo :

 var str1="hello how are youhow to extract the first 10 characters of a htmlstring without losing the html of the string"; var res = str1.replace(/<(.*?\>)(.{11}).*/, '<$1$2 

Cosa ne pensi di questo:

 regex = /(<[a-z0-9]+>|)([a-z0-9 ]{0,10})[a-z0-9 ]*(<\/[a-z0-9]+>|).*/ str1 = "hello how are you.how to extract the first 10 characters of a htmlstring without losing the html of the string" console.log(str1.replace(regex, '$1$2$3')) str1 = "hello how are you

how to extract the first 10 characters of a htmlstring without losing the html of the string

" console.log(str1.replace(regex, '$1$2$3'))