Prettier自动“修正”正则表达式转义斜杠`\`。

12

pattern: '^131\.[0-9]{6}$',

将其改为更易懂的格式:pattern: '^131.[0-9]{6}$',。是否有忽略行或文件的方法?


{btsdaf} - TheChetan
1
@TheChetan 那是非常具有误导性的。您可以在正则表达式中转义特殊字符以变成字面字符。 "如果您想在正则表达式中使用任何这些字符作为字面字符,您需要使用反斜杠进行转义" - https://www.regular-expressions.info/characters.html#Special_Characters - shriek
1
@shriek 你是对的,我当时的理解是错误的。那条评论是错误和误导性的。 - TheChetan
1个回答

14
假定你正在使用Prettier,这里假设你正在使用JavaScript。在字符串'^131\.[0-9]{6}$'中,\.只是一个普通的字符串,而不是正则表达式。 Prettier在重新格式化时会删除不必要的转义字符。由于\.在字符串上下文中不具有特殊含义,因此与仅仅拥有.是相同的。
你的目标是将\.放入正则表达式中,我假设你将使用new RegExp()构造函数创建正则表达式;在这种情况下,你需要转义反斜杠。
pattern: '^131\\.[0-9]{6}$'

2
{btsdaf} - leogoesger
1
{btsdaf} - leogoesger
2
你可以使用字面量表示法来避免 prettier 格式化程序去除任何斜杠:const regex = /^\S{8,}$/; regex.test('some string') 来源:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp - Patronaut
在一个带有 /*eslint quotes: ["error", "single", { "avoidEscape": false }]*/ 的项目中,如何处理单引号转义问题?似乎唯一的方法是使用 .prettierignore 文件。例如字符串:'check the user\'s comment' 会被转换为 "check the user's comment",而 ESLint 则会报错。 - Amin Bakhtiari Far
1
@AminBakhtiariFar 这并不是与原问题相关的,但我建议你考虑使用 https://github.com/prettier/eslint-config-prettier 来禁用与 prettier 冲突的 ESLint 规则。(这是常见的做法。) - searlea
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接