dedlfix: javascript search() arbeitet nicht richtig mit Punkt?

Beitrag lesen

Tach!

Wie soll ich denn sonst prüfen ob Punkt da drin ist? Indem du den Punkt regex-technisch maskierst. Habs gerade versucht, man braucht dazu zwei Backslashs.

2 Backslashes, ok da muss man erst mal drauf kommen, danke.

Das trifft nur zu, wenn du ein String-Literal übergibst. Dann geht zuerst ein Backslash "verloren", weil der allgemeine Syntaxparser den Backslash als Escape-Zeichen hat. Vergleiche console.log('\.'). In der gleichen Situation ist man, wenn man eine Variable aus einem String-Literal erstellt, und die dann übergibt. Der doppelte Backslash sorgt dafür, dass im String selbst ein einzelner Backslash ankommt. Und dieser String wird dann dem RegExp-Objekt übergeben, das den Backslash dann gemäß seiner Regeln auswerten kann.

x.search('\\.')
x.search('\\\\')

Eine Alternative sind Template-Strings

x.search(`\.`)
x.search(`\\`)

Man kann .search() auch ein RegExp-Literal übergeben. Das wird dann direkt geparst ohne den Umweg über einen String. In dem Fall muss man auch keine zusätzlichen für den String notwendigen Maskierungen hinzufügen. Da aber auch hier der Backslash ein Maskier-Zeichen ist, muss er, wenn er literal gemeint ist, auch doppelt notiert werden.

x.search(/\./)
x.search(/\\/)

All das braucht man aber nicht, wenn man gar keine Regular Expressions suchen möchte, denn dafür gibt es:

Für eine nicht-regex Suche dürfte indexOf gedacht sein. Dann habe ich mich ja richtig entschieden, danke.

includes() wäre noch besser, weil das gleich ein boolesches Ergebnis bringt und nicht erst noch die Fundstellenposition ausgewertet werden muss.

dedlfix.