PHP-functie naar Javascript: scanreeks en woorden in matrix toevoegen

Ik probeer deze php-functie te converteren naar javascript:

function sanitize_words($string,$limit=false) {
    preg_match_all("/\p{L}[\p{L}\p{Mn}\p{Pd}'\x{2019}]{1,}/u",$string,$matches,PREG_PATTERN_ORDER);
    return $matches[0];
}

Kortom, het duurt deze string:

$string = "Why hello, how are you?"
$array = sanitize_words($string);

En converteert het in een array:

$array[0] = 'Why';
$array[1] = 'hello';
$array[2] = 'how';
$array[3] = 'are';
$array[4] = 'you';

Het werkt prima op PHP, maar ik heb geen idee hoe ik het moet implementeren in javascript, omdat er geen preg_match_all is in phpjs.org . Om het even welke ideeën? Bedankt.

0

3 antwoord

U hebt geen regex nodig, split doet het in javascript.

<script type="text/javascript">
var myString = "zero one two three four";

var mySplitResult = myString.split(" ");

for(i = 0; i < mySplitResult.length; i++){
    document.write("
Element " + i + " = " + mySplitResult[i]); } </script>

displays:

Element 0 = zero
Element 1 = one
Element 2 = two
Element 3 = three
Element 4 = four 

Als een kanttekening, als je in je PHP-script alleen maar een reeks woorden wilt maken die je explode() zou moeten gebruiken, heeft het VEEL minder overhead:

<?php
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
// to remove non alpha-numeric chars, and still less costly
$pizza = preg_replace('/[^a-zA-Z0-9\s]/', '', $pizza);
$pieces = explode(" ", $pizza);
echo $pieces[0];//piece1
echo $pieces[1];//piece2
?>
1
toegevoegd
wel, de regex verwijdert komma's, uitroeptekens, etc. nog steeds werkt de splitsing aardig voor mijn behoeften.
toegevoegd de auteur andufo, de bron

Gebruik de methode String.match , met de vlag g (algemeen) ingesteld op de RegEx. \ w is gelijk aan [a-zA-Z0-9 _] . Als u echt uw huidige patroon wilt nabootsen, gebruikt u deze pagina als een verwijzing naar de karaktereigenschappen in een JavaScript-patroon.

function sanitize_words($string) {
    return $string.match(/\w+/g);
}
1
toegevoegd

De JavaScript-functie split() maakt een array van elke tekenreeks met een scheidingsteken. In dit geval een spatie .

var str = "Why hello, how are you?".split(" ")
alert(str[0])//= "Why"
1
toegevoegd