有没有简单的方法来检查字符串的第一个和最后一个字符是否相同,只有正则表达式?
我知道你可以查询charAt
var firstChar = str.charAt(0);
var lastChar = str.charAt(length-1);
console.log(firstChar===lastChar):
我不是要求这个:Regular Expression to match first and last character
答案 0 :(得分:13)
您可以使用正则表达式capturing group及其backreference通过捕获第一个字符来断言起始字符和结束字符是相同的。要使用RegExp#test
方法测试正则表达式匹配。
@Table(database = AppDatabase.class)
public class FoodData {
@PrimaryKey(autoincrement = true)
private int id;
@Column
private String title;
@Column
private boolean rice;
@Column
private int foodId;
@Column
private int parentId;
public FoodData() {
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public boolean isRice() {
return rice;
}
public void setRice(boolean rice) {
this.rice = rice;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getFoodId() {
return foodId;
}
public void setFoodId(int foodId) {
this.foodId = foodId;
}
public int getParentId() {
return parentId;
}
public void setParentId(int parentId) {
this.parentId = parentId;
}
}
var regex = /^(.).*\1$/;
console.log(
regex.test('abcdsa')
)
console.log(
regex.test('abcdsaasaw')
)
在字符串^
(.)
匹配任何字符(换行符除外) - 在零和无限次之间,尽可能多次,根据需要返回(贪婪).*
匹配与第一个捕获组\1
在字符串 $
不包含换行符,按顺序包含新行更新正则表达式。
.
参考:How to use JavaScript regex over multiple lines?
var regex = /^([\s\S])[\s\S]*\1$/;
console.log(
regex.test(`abcd
sa`)
)
console.log(
regex.test(`ab
c
dsaasaw`)
)
- 匹配单个字符[.....]
- 匹配任何空格字符(等于\s
)[\r\n\t\f\v ]
- 匹配任何非空格字符(等于\S
)最后[^\r\n\t\f ]
匹配任何字符。