javascript正则表达式检查第一个和最后一个字符是否相似?

时间:2017-01-26 10:50:05

标签: javascript

有没有简单的方法来检查字符串的第一个和最后一个字符是否相同,只有正则表达式?

我知道你可以查询charAt

var firstChar = str.charAt(0);
var lastChar = str.charAt(length-1);
console.log(firstChar===lastChar):

我不是要求这个:Regular Expression to match first and last character

1 个答案:

答案 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;
    }
}

Regex explanation here :

  1. var regex = /^(.).*\1$/; console.log( regex.test('abcdsa') ) console.log( regex.test('abcdsaasaw') )在字符串
  2. 的开头断言位置
  3. 第一捕获小组^
  4. (.)匹配任何字符(换行符除外) - 在零和无限次之间,尽可能多次,根据需要返回(贪婪)
  5. .*匹配与第一个捕获组
  6. 最近匹配的文本相同的文本
  7. \1在字符串
  8. 的末尾断言位置

    $不包含换行符,按顺序包含新行更新正则表达式。

    .

    参考:How to use JavaScript regex over multiple lines?

    Regex explanation here :

    1. var regex = /^([\s\S])[\s\S]*\1$/; console.log( regex.test(`abcd sa`) ) console.log( regex.test(`ab c dsaasaw`) ) - 匹配单个字符
    2. [.....] - 匹配任何空格字符(等于\s
    3. [\r\n\t\f\v ] - 匹配任何非空格字符(等于\S
    4. 最后[^\r\n\t\f ]匹配任何字符。