Recipe Name:
Strings: Regex Use: Escape Regex Special Character for Any Char Matching
Description:
First argument is a regular expression, matching with dot might have unintended behaviour.
Level:
error
Language:
- java
Tags:
- security
- Java basic
Documentation
String's split
method takes a regular expression as argument. The character '.' has a special meaning in regexes.
When trying to split
by "."
we will not get the result we expect. Instead every character in the String will be used as a split point, resulting in an empty array. We need to use "\\."
instead i.e. the .
escaped in a String
.
String[] parts = "123.456.789.012".split(".");After:
String[] parts = "123.456.789.012".split("\\.");
Recipe
id: scw:java:string-split-dot-regex version: 10 metadata: name: 'Strings: Regex Use: Escape Regex Special Character for Any Char Matching' shortDescription: First argument is a regular expression, matching with dot might have unintended behaviour. level: error language: java enabled: true descriptionFile: descriptions/StringsRegexUseEscapeRegexSpecialCharacterforAnyCharMatching.html tags: security;Java basic search: methodcall: args: 1: value: stringified: "." name: matches: (split|replaceAll|replaceFirst) declaration: type: java.lang.String availableFixes: - name: Escape the regex special character for any char actions: - modifyArguments: rewrite: 1: '"\\."'