Linux路径校验-实战
Linux路径校验
// 校验规则:路径必须以\开头,路径不允许输入除英文.和下划线_以外的特殊字符,
// 允许输入a-zA-z0-9,路径中允许存在空格。
// 注意:使用该正则前需要对每级路径做去空格处理,该正则不能匹配路径前后空格
// 正则表达式
/^\/([\w.\s][\/]?)+(\/)?$/
js对linux路径进行预处理
// 1.去除路径两边的空格
function linuxPathInit(linuxPath){
var str = linuxPath;
str = str.trim();
// 2.将正斜杠/替换为反斜杠\
while (str.indexOf("/") > -1) {
str = str.replace("/", "\\");
}
// 3.路径结尾含有多个\\的直接替换为一个
while (str.indexOf("\\\\") > -1) {
str = str.replace("\\\\", "\\");
}
// 4.去除每个路径两边的空格
let tempStr = "";
if (str.indexOf("/") > -1) {
let strings = str.split("/");
for (let i = 0; i < strings.length; i++) {
if (i === strings.length -1) {
tempStr += strings[i].trim()
}else {
tempStr += strings[i].trim()+"/"
}
}
str = tempStr;
}
return str;
}
java对linux路径进行预处理
注意:java多出4和6步骤,是因为java和js的split函数分割字符串不一致,java会自动忽略最后一位空格
public static String linuxPathInit(String item) {
// 1.替换路径两边的空格
item = item.trim();
// 2.将反斜杠\替换为正斜杠/
while (item.contains("\\")) {
item = item.replace("\\", "/");
}
// 3.路径结尾含有多个//的直接替换为一个
while (item.contains("//")) {
item = item.replace("//", "/");
}
// 4.判断最后一个字符是否有/号,如果存在flag != -1
int flag = item.substring(item.length() - 1).indexOf("/");
// 5.去除目录两边的空格
StringBuilder tempitem = new StringBuilder();
if (item.contains("/")) {
String[] itemings = item.split("/");
for (int j = 0; j < itemings.length; j++) {
if (j == itemings.length -1) {
tempitem.append(itemings[j].trim());
}else {
tempitem.append(itemings[j].trim()).append("/");
}
}
item = tempitem.toString();
}
// 6.如果原始路径存在/号结尾,则补上
if (flag != -1) {
item += "/";
}
return item;
}
正文到此结束