RegEx funktioniert nicht in IE8
OK, nach der Suche hoch und niedrig, sowohl hier als auch über Google habe ich in den sauren Apfel beißen und eine neue Frage hier bezüglich RegEx im IE8.
Ich habe den folgenden code:
var output = input.replace(/^\S+(\s| )+/, '');
Sein Zweck ist, zu entfernen Währung, Namen von Mengen, so "kr 12 345,00" wird "12 345,00" und "NOK-12 345,00" wird "12 345,00" und so weiter.
Dieser funktioniert überall, außer in den Internet Explorer-Versionen 8 oder unten, wo es lässt die Eingabe unverändert.
Anfangs war ich mit der new RegExp()
Weg, es zu tun, aber geändert, um den regulären Ausdruck, literal, um zu sehen, ob es einen Unterschied zwischen dem, wie IE behandelt diese zwei Varianten - die, zum Glück, es war nicht 🙂
Habe ich auch schon versucht mit nur der \s
und nur mit der
aber, dass nicht einen Unterschied machen.
Den wirklich seltsame Sache ist, dass, wenn das obige regex mit "kr 12 345,00", wie der Eingang auf die W3 Schule "Try It Yourself" Seite im IE 8 funktioniert es einwandfrei! (auch wenn der erste Platz ist verbunden mit
)
Also nochmals zu betonen: Der Ort, ich sehe das Problem bei der Verwendung von regex in meinem Javascript-code, der sich in einer AngularJS-filter-Funktion (ich bin, einen filter zu definieren), und der filter ist wieder die ursprüngliche Eingabe im IE8 (die auch gesehen, mit Konsole.log() in IE8). Jemand anderes getestet in IE9 für mich, und berichtete, dass es geklappt hat - und ich habe getestet in Chrome als auch. Der einzige Browser, in dem ich auf dieses Problem sind IE8 und IE7.
, Was auf der Erde geschieht hier?
InformationsquelleAutor Joe Dyndale | 2013-02-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
Laut hier, "im IE8... \N (die weiße Fläche) nicht enthalten non-breaking space".
Oder besser, benutzen Sie einfach
wo
\D
ist jede nicht-Ziffer-Zeichen.Es ist wirklich merkwürdig, dass meine ursprüngliche regex funktioniert auf der W3Schools-Seite im IE8 aber.
Ich hatte gehört, über den IE8 non-breaking space bug vor - aber ich denke, dass ich aus irgendeinem Grund dachte, vielleicht sind die browser-version der RegEx sollte die Zeichenfolge " " in den \s-Klasse - die ich sicherlich sehen, ist nicht wirklich sehr logisch. Ich denke, ich konnte einfach nicht glauben, dass MS verpasst hatte, darunter die offensichtlichsten Zeichen in dieser Klasse 🙂 vielen Dank für das clearing es für mich aber!
InformationsquelleAutor MikeM
Erstens, wie du bist-überprüfung für
ich glaube, du hast immer den Wert aus dem html-Code (mitel.innerHTML
oder$(el).html()
. Eine bessere Methode, die konvertiert alle non-breaking Leerzeichen in '' zu verwendenel.textContent
oder$(el).text()
(die auch deckt Sie für Fälle, in denen z.B. die Namen der Währung ist verpackt in einer Zeitspanne (die möglicherweise später zahlen in seinen Attributen))Dann folgende regex zum ersetzen aller nicht-Ziffern am Beginn der Zeichenfolge
InformationsquelleAutor wheresrhys