您需要创建一个匹配字符串的正则表达式"страна(переданная или любая)/город(переданный или любой)/улица(переданная или любая)"
生成正则表达式:
let generatePattern = (filerOptions = {}) => {
const options = {
country: `[\\s\\S]`,
city: `[\\s\\S]`,
street: `[\\s\\S]`,
...filerOptions,
};
return pattern = new RegExp(`${options.country}\/${options.city}\/${options.street}`);
}
let reg = generatePattern({}); // /[\s\S]/[\s\S]/[\s\S]/
reg.test('dd/dd/dd'); // false
此外,如果您使用两个组件重复测试,那么一切都会通过:
generatePattern = (filerOptions = {}) => {
const options = {
country: `[\\s\\S]`,
city: `[\\s\\S]`,
...filerOptions,
};
return pattern = new RegExp(`${options.country}\/${options.city}`);
}
reg = generatePattern({}); // /[\s\S]/[\s\S]/
reg.test('dd/dd'); // true
你如何编写一个正则表达式来通过三个由斜杠分隔的任意字符串的测试?
因为正则表达式是错误的)
[\s\S]
- 表示“一个空格或一个非空格”。测试'dd/dd'
通过,因为有这样的匹配 - dd/d
d。而且它不再与第三个斜杠一起使用)要匹配格式,您需要加上一个加号,意思是“一次或多次”。并且“空格或非空格”可以替换为“愚蠢的一切” -.
(实际上,除了换行符之外的一切)https://regex101.com/ - 正则表达式的一个方便的东西。