36
36
scriptRegExp = regexp .MustCompile (`(?i)<(script|iframe|embed|object)[^>]*>.*</(script|iframe|embed|object)>` ) // Scripts and embeds
37
37
)
38
38
39
- // emptySpace is an empty space for replacing
40
- var emptySpace = []byte ("" )
41
-
42
39
// ErrNilRegexp indicates that a nil regular expression was provided.
43
40
var ErrNilRegexp = errors .New ("regular expression cannot be nil" )
44
41
@@ -177,6 +174,7 @@ func BitcoinCashAddress(original string) string {
177
174
b .WriteRune (r )
178
175
}
179
176
}
177
+
180
178
return b .String ()
181
179
}
182
180
@@ -205,9 +203,8 @@ func BitcoinCashAddress(original string) string {
205
203
// See the benchmarks in the `sanitize_benchmark_test.go` file.
206
204
// See the fuzz tests in the `sanitize_fuzz_test.go` file.
207
205
func Custom (original string , regExp string ) string {
208
-
209
206
// Return the processed string or panic if regex fails
210
- return string ( regexp .MustCompile (regExp ).ReplaceAll ([] byte ( original ), emptySpace ) )
207
+ return regexp .MustCompile (regExp ).ReplaceAllString ( original , "" )
211
208
}
212
209
213
210
// CustomCompiled returns a sanitized string using a pre-compiled regular
@@ -262,11 +259,13 @@ func CustomCompiled(original string, re *regexp.Regexp) (string, error) {
262
259
func Decimal (original string ) string {
263
260
var b strings.Builder
264
261
b .Grow (len (original ))
262
+
265
263
for _ , r := range original {
266
264
if unicode .IsDigit (r ) || r == '.' || r == '-' {
267
265
b .WriteRune (r )
268
266
}
269
267
}
268
+
270
269
return b .String ()
271
270
}
272
271
@@ -361,7 +360,6 @@ func Domain(original string, preserveCase bool, removeWww bool) (string, error)
361
360
// See the benchmarks in the `sanitize_benchmark_test.go` file.
362
361
// See the fuzz tests in the `sanitize_fuzz_test.go` file.
363
362
func Email (original string , preserveCase bool ) string {
364
-
365
363
// Skip all work for empty string
366
364
if original == "" {
367
365
return original
@@ -383,6 +381,7 @@ func Email(original string, preserveCase bool) string {
383
381
// Filter to valid email characters
384
382
var b strings.Builder
385
383
b .Grow (len (original ))
384
+
386
385
for _ , r := range original {
387
386
valid := r == '@' || r == '.' || r == '_' || r == '-' || r == '+' ||
388
387
(r >= '0' && r <= '9' ) ||
@@ -418,7 +417,6 @@ func Email(original string, preserveCase bool) string {
418
417
// See the benchmarks in the `sanitize_benchmark_test.go` file.
419
418
// See the fuzz tests in the `sanitize_fuzz_test.go` file.
420
419
func FirstToUpper (original string ) string {
421
-
422
420
// Avoid extra work if string is empty
423
421
if len (original ) == 0 {
424
422
return original
@@ -471,6 +469,7 @@ func FormalName(original string) string {
471
469
b .WriteRune (r )
472
470
}
473
471
}
472
+
474
473
return b .String ()
475
474
}
476
475
@@ -493,7 +492,7 @@ func FormalName(original string) string {
493
492
// See the benchmarks in the `sanitize_benchmark_test.go` file.
494
493
// See the fuzz tests in the `sanitize_fuzz_test.go` file.
495
494
func HTML (original string ) string {
496
- return string ( htmlRegExp .ReplaceAll ([] byte ( original ), emptySpace ) )
495
+ return htmlRegExp .ReplaceAllString ( original , "" )
497
496
}
498
497
499
498
// IPAddress returns a sanitized IP address string for both IPv4 and IPv6 formats.
@@ -523,6 +522,7 @@ func IPAddress(original string) string {
523
522
b .WriteRune (r )
524
523
}
525
524
}
525
+
526
526
ip := net .ParseIP (b .String ())
527
527
if ip == nil {
528
528
return ""
@@ -592,6 +592,7 @@ func PhoneNumber(original string) string {
592
592
b .WriteRune (r )
593
593
}
594
594
}
595
+
595
596
return b .String ()
596
597
}
597
598
@@ -619,6 +620,7 @@ func PhoneNumber(original string) string {
619
620
func PathName (original string ) string {
620
621
var b strings.Builder
621
622
b .Grow (len (original ))
623
+
622
624
for _ , r := range original {
623
625
switch {
624
626
case '0' <= r && r <= '9' :
@@ -631,6 +633,7 @@ func PathName(original string) string {
631
633
b .WriteRune (r )
632
634
}
633
635
}
636
+
634
637
return b .String ()
635
638
}
636
639
@@ -665,6 +668,7 @@ func Punctuation(original string) string {
665
668
b .WriteRune (r )
666
669
}
667
670
}
671
+
668
672
return b .String ()
669
673
}
670
674
@@ -695,6 +699,7 @@ func ScientificNotation(original string) string {
695
699
b .WriteRune (r )
696
700
}
697
701
}
702
+
698
703
return b .String ()
699
704
}
700
705
@@ -718,7 +723,7 @@ func ScientificNotation(original string) string {
718
723
// See the benchmarks in the `sanitize_benchmark_test.go` file.
719
724
// See the fuzz tests in the `sanitize_fuzz_test.go` file.
720
725
func Scripts (original string ) string {
721
- return string ( scriptRegExp .ReplaceAll ([] byte ( original ), emptySpace ) )
726
+ return scriptRegExp .ReplaceAllString ( original , "" )
722
727
}
723
728
724
729
// SingleLine returns a sanitized version of the input string as a single line of text.
@@ -753,6 +758,7 @@ func SingleLine(original string) string {
753
758
b .WriteRune (r )
754
759
}
755
760
}
761
+
756
762
return b .String ()
757
763
}
758
764
@@ -778,11 +784,13 @@ func SingleLine(original string) string {
778
784
func Time (original string ) string {
779
785
var b strings.Builder
780
786
b .Grow (len (original ))
787
+
781
788
for _ , r := range original {
782
789
if unicode .IsDigit (r ) || r == ':' {
783
790
b .WriteRune (r )
784
791
}
785
792
}
793
+
786
794
return b .String ()
787
795
}
788
796
@@ -810,13 +818,15 @@ func Time(original string) string {
810
818
func URI (original string ) string {
811
819
var b strings.Builder
812
820
b .Grow (len (original ))
821
+
813
822
for _ , r := range original {
814
823
if unicode .IsLetter (r ) || unicode .IsDigit (r ) ||
815
824
r == '-' || r == '_' || r == '/' || r == '?' ||
816
825
r == '&' || r == '=' || r == '#' || r == '%' {
817
826
b .WriteRune (r )
818
827
}
819
828
}
829
+
820
830
return b .String ()
821
831
}
822
832
@@ -845,6 +855,7 @@ func URI(original string) string {
845
855
func URL (original string ) string {
846
856
var b strings.Builder
847
857
b .Grow (len (original ))
858
+
848
859
for _ , r := range original {
849
860
if unicode .IsLetter (r ) || unicode .IsDigit (r ) ||
850
861
r == '-' || r == '_' || r == '/' || r == ':' ||
0 commit comments